2 回答

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)有匹配項時)。所以那是行不通的。

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;
}
- 2 回答
- 0 關(guān)注
- 87 瀏覽
添加回答
舉報