我想查找给定的值并返回对应的键,尝试了很多方法但都没有成功。虽然这是一个简单的任务,但我已经花费了很多时间测试不同的解决方案,迄今为止还没有运气。
以下是一些我尝试过的函数,但它们都没有返回正确的键:(在这个例子中应该是0)
这个函数什么也不返回:
$mapkey = $data['srv']['map_image'];
$ikey = array_search($mapkey, $data['srv']['maps']);
if ($ikey !== FALSE) {
// Match made.
}
我从这个地方获得了“3”,但应该是“0”:
foreach ($data['srv']['maps'] as $key => $value) {
$mapkey = ($data['srv']['map_image']);
if ($value === $mapkey && $data['srv']['maps'][$key]['map_image'] === $mapkey) {
return $key;
}
}
我从这里得到的应该是“0”,而不是什么都没有:
$mapkey = $data['srv']['map_image'];
foreach ($data['srv']['maps'] as $key => $val) {
if ($val === $mapkey) {
return $key;
}
}
这个会彻底崩溃网页:
function recursive_array_search($mapkey,$data) {
foreach($data['srv']['maps'] as $key=>$val) {
$mapkey = $data['srv']['map_image'];
$imagekey=$key;
if($mapkey===$val OR (is_array($val) && recursive_array_search($mapkey,$val) !== false)) {
return $imagekey;
}
}
return false;
}
$data数组的示例:Array
(
[srv] => Array
(
[map_name] => map 1
[map_image] => MP_001
[maps] => Array
(
[0] => Array
(
[map_name] => map 1
[map_image] => mp_001
)
[1] => Array
(
[map_name] => map 2
[map_image] => mp_017
)
[2] => Array
(
[map_name] => map 3
[map_image] => mp_014
)
[3] => Array
(
[map_name] => map 4
[map_image] => mp_007
)
)
)
)