我在我的課上有這個方法,這很好,(kind-of)。 但是,無論什麼原因,它返回NULL。 如果我在函數中放置了一個(print_r($ keys)),它會打印出來。類方法,在實際值上返回NULL
RETURN未傳遞值。有什麼想法嗎?
function arrayKeyPath ($searchFor, $arr, $keys=array())
{
if(!empty($arr) && is_array($arr)) {
if(isset($arr[$searchFor])) {
return $keys;
}
foreach($arr as $pKey => $a) {
if(is_array($a)) {
$keys[] = $pKey;
arrayKeyPath($searchFor, $a, $keys);
}
}
}
}
$user['results'][0] = array (
'userId' => '1',
'firstName' => 'John',
'lastName' => 'Doe',
'options' =>
array (
'showNews' => 'on',
'newOptions' => array(
'option1'=> 1,
'option2'=> 2,
'option3'=> 3
),
'connectWithTimeFrame1' => '30',
'defaultMessageTemplate' => '12',
'connectWithTimeFrame' => 90,
),
);
$exists = arrayKeyPath('option1', $user['results'][0]);
var_dump($exists);
網上運行版本 https://ideone.com/fnml1S
沒有'第一級option1'鍵,以便將'return'從不打 – PeeHaa
它繼續通過循環重新循環,它確實被擊中。如果您在返回之前放置一個Print_R($鍵),它將顯示它應該顯示的內容。 – Justin
不,它不會被擊中。它會繼續執行,並在您的遞歸調用中可能遇到*的地方*,但在第一次函數調用時沒有返回該位置。你只是忽略你的進一步函數調用的結果 – PeeHaa