Есть массив. Нужно зная значение, например "number_1", перебрать массив "city_list", включая все массивы внутри него, и при обнаружении значения "number_1" вернуть результатом переменную массива. То есть, в данном примере при обнаружении значения "number_1" вернуть в результате переменную массива, что в примере равно "1", но не ключ этого значения, коим является "city_1". Именно, надо вернуть ключ всего массива, в котором обнаружено указанное значение.
<?php
$region_center_city = array (
"caption_city_list_0" => "1",
"caption_city_list_1" => "2",
"caption_city_list_2" => "3",
0 => array (
"number_region_list" => 0,
"text_region_list" => "name",
"city_list" => array (
0 => array (
"city_1" => 0,
"city_2" => "name",
"city_3" => "number_0",
"city_N" => "N"
),
1 => array (
"city_1" => 1,
"city_2" => "name",
"city_3" => "number_1",
"city_N " => "N"
),
2 => array (
"city_1" => 2,
"city_2" => "name",
"city_3" => "number_2",
"city_N" => "N"
),
3 => array (
"city_1" => 3,
"city_2" => "name",
"city_3" => "number_3",
"city_N" => "N"
),
4 => array (
"city_1" => 4,
"city_2" => "name",
"city_3" => "number_4",
"city_N" => "N"
)
)
)
);
function _Search_key($search_point, $array){
if ( !empty ($array)){
if (is_array($array)){
while (list($key, $val) = each ($array)){
if ( !empty ($val)){
if (is_array($val)){
while (list($k, $v) = each ($val)){
if ($search_point===$v){
return $key;
}
}
}
}
}
}
}
return false;
}
$array = $region_center_city[0]["city_list"];
$search_point = "number_1";
$key = _Search_key($search_point, $array);
if (! empty ($key)){ print "Значению '".$search_point."'
соответствует ключ '".$key."' из массива
\$region_center_city[0][city_list]" ; }
else { print "Ничего не нашли."; }
?>