Для простых массивов с парами ключ-значение мы можем легко найти ключ на основе значения, используя array_search()
, Но у меня есть массив, в котором значения могут быть строкой или массивом, и мне нужно найти ключ, где значением является массив с конкретными ключами.
$myArray = array(
0 => string_value,
1 => string_value2,
3 => array(
'config' => array(
'option1' => value1,
'option2' => value2,
),
),
4 => string_value3,
);
Мне нужно найти ключ для элемента, где дочерний массив имеет ключ config
я должен искать конфиг и возвращать 3
,
Я бы предпочел не перебирать массив. Ничего страшного, если это единственный вариант. Но мне интересно, есть ли более элегантный способ найти этот ключ.
используйте array_filter для фильтрации массива с помощью config.
$o = array_filter($array, function($v){return !empty($v['config']) ? true : false;});
var_dump(array_keys($o));
Вы должны перебрать элементы массива и проверить значение каждого элемента в цикле. Проверить, если $item["config"]
установлен в цикле, возвращает индекс элемента цикла.
$index;
foreach ($myArray as $key => $item){
if (isset($item["config"]))
$index = $key;
}
echo $index;
Смотрите результат кода в демонстрация