第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

遞歸PHP函數(shù)查找多維數(shù)組中數(shù)組中第一次出現(xiàn)的鍵

遞歸PHP函數(shù)查找多維數(shù)組中數(shù)組中第一次出現(xiàn)的鍵

PHP
哆啦的時光機 2023-03-11 15:29:09
我正在嘗試遞歸循環(huán)遍歷我的多維數(shù)組,如果它們的數(shù)組有鍵,我想返回當(dāng)前數(shù)組。我試圖讓它盡可能簡單,但這返回奇怪的類型錯誤讓我感到困惑。在 foreach 循環(huán)內(nèi),如果嵌套項是一個數(shù)組,則再次運行該函數(shù),直到找到鍵的出現(xiàn)。撓我的頭,誰能看出我的問題。謝謝。<?php/** * @param int|string $key * @param array $array * @return bool|array */public static function multi_array_key_exists($key,$array): bool{    // if array key exist in this dimension    if (array_key_exists($key,$array)) {        // return the array        return $array;    } else {        // foreach array as nested item        foreach ($array as $nested) {            // if the nested item is an array            if (is_array($nested))                // run this function again                self::multi_array_key_exists($key,$nested);        }    }    return false;}
查看完整描述

2 回答

?
慕妹3242003

TA貢獻1824條經(jīng)驗 獲得超6個贊

當(dāng)您進行遞歸調(diào)用時,您會忽略它返回的內(nèi)容。您應(yīng)該檢查它,看看該調(diào)用是否找到了匹配項。

代替:

self::multi_array_key_exists($key,$nested);

和:

$res = self::multi_array_key_exists($key,$nested);if ($res !== false) return $res;

(不要忘記將語句括在大括號中)。

只有當(dāng)所有遞歸調(diào)用都返回時false你才能安全地return false結(jié)束函數(shù)體。

一旦這樣的遞歸調(diào)用返回一個匹配項,就沒有必要在該foreach循環(huán)中保持迭代。您可以立即退出,將相同的信息返回給父執(zhí)行上下文。

另一個問題是,您聲明函數(shù)返回 a bool,但您希望它有時返回false,有時返回數(shù)組(當(dāng)有匹配項時)。所以那是行不通的。


查看完整回答
反對 回復(fù) 2023-03-11
?
Helenr

TA貢獻1780條經(jīng)驗 獲得超4個贊

我糾正了你的方法。現(xiàn)在它如你所愿。您還需要刪除返回的 bool 類型,因為它可以是數(shù)組或布爾值。


public static function multi_array_key_exists($key,$array)

{

    // if array key exist in this dimension

    if (array_key_exists($key,$array)) {

        // return the array

        return $array;

    } else {

        // foreach array as nested item

        foreach ($array as $nested) {

            // if the nested item is an array

            if (is_array($nested)) {

                // run this function again

                $value = self::multi_array_key_exists($key,$nested);

                if ($value) {

                    return $value;

                }

            }

        }

    }

    return false;

}


查看完整回答
反對 回復(fù) 2023-03-11
  • 2 回答
  • 0 關(guān)注
  • 87 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號