Ниже приведена справка о том, как выглядит мой массив. Существует внутренний массив, называемый офицерами, и я бы хотел его пропустить и проверить, есть ли сотрудник определенного имени, и если бы я хотел получить индексный ключ внешнего массива.Получить ключ 3-мерного массива
'edges' =>
array (size=59)
0 =>
array (size=3)
'source' => int 0
'target' => int 12
'officers' =>
array (size=1)
0 => string 'PARKER, Thomas, Sir' (length=19)
1 =>
array (size=3)
'source' => int 0
'target' => int 19
'officers' =>
array (size=1)
0 => string 'STEVENS, Anne' (length=13)
Так что, если я проверил на Стивенс, Энн, я хотел бы получить ключ 1.
Вот код, который я нашел в другом вопросе он работает с 2d массивов, но не с 3d массивом.
function array_search_inner ($array, $attr, $val, $strict = FALSE) {
// Error is input array is not an array
if (!is_array($array)) return FALSE;
// Loop the array
foreach ($array as $key => $inner) {
// Error if inner item is not an array (you may want to remove this line)
if (!is_array($inner)) return FALSE;
// Skip entries where search key is not present
if (!isset($inner[$attr])) continue;
if ($strict) {
// Strict typing
if ($inner[$attr] === $val) return $key;
} else {
// Loose typing
if ($inner[$attr] == $val) return $key;
}
}
// We didn't find it
return NULL;
}
Я могу предложить быстрое и короткое решение, но со строгим сопоставлением. И если мы говорим о струнах, я думаю, сравнение должно быть строгим – RomanPerekhrest