Метод класса, возвращающий NULL по фактическому значению

-6

У меня есть этот метод в моем классе, который отлично работает (вид). Но по какой-либо причине он возвращает NULL. Если я положил (print_r ($ keys)) в функцию, он напечатает ее.

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

спросил(а) 2015-12-08T23:03:00+03:00 5 лет, 2 месяца назад
0
113

Итак, что вы в основном пытаетесь сделать, это поиск ключа в многомерном массиве. Если вы просто хотите проверить, есть ли вообще ключ, рассмотрите следующий код:

// shamelessly copied from http://codeaid.net/php/extract-all-keys-from-a-multidimensional-array
function array_keys_multi(array $array) {
$keys = array();
foreach ($array as $key => $value) {
$keys[] = $key;
if (is_array($value))
$keys = array_merge($keys, array_keys_multi($value));
}
return $keys;
}

// in your case:
// array("results", 0, "userId", "firstName", "lastName", "options", "showNews", "newOptions", "option1", "option2", "option3", "connectWithTimeFrame1", "defaultMessageTemplate", "connectWithTimeFrame");

// call the function
$keys = array_keys_multi($user);

// check if the "option1" can be found in the array
if (in_array("option1", $keys))
echo "Yup, in there.";

ответил(а) 2015-12-08T23:25:00+03:00 5 лет, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема