Если значения в вашем основном массиве были простыми типами - номерами, строками и т. Д. - вы бы хотели использовать array_search
, чтобы найти связанный ключ. В вашем случае значением каждого элемента является другой массив, поэтому вам необходимо явно перебрать каждый элемент и выполнить поиск полученного массива для вашего значения. Нечто подобное должно сделать трюк:
function get_key_from_value(array $arr, $needle)
{
foreach ($arr as $key => $value)
if (in_array($needle, $value, true))
return $key;
return null;
}
И вы могли бы назвать это так:
echo get_key_from_value($a, 333);
Update: Это было упомянуто в комментариях, что это не является общим решением цели, так Я реализовал версию, которая:
function array_search_recursive($needle, array $haystack, $strict = false)
{
foreach ($haystack as $key => $value) {
if (is_array($value)) {
if (!is_null(array_search_recursive($needle, $value, $strict))) {
return $key;
}
} else {
if ($strict && $value === $needle) {
return $key;
} else if (!$strict && $value == $needle) {
return $key;
}
}
}
return null;
}
который можно назвать, как это (порядок аргументов основан на array_search
):
echo array_search_recursive(333, $a);
Вы говорите об ассоциативных массивах? – Ismail