【发布时间】:2015-04-25 22:57:00
【问题描述】:
我想找到一个给定的值并返回键,我尝试了很多方法来解决这个问题,但都没有奏效。 我花了很多时间测试不同的解决方案,但到目前为止没有运气,但这是一个如此简单的任务。 以下是我尝试过的一些函数,但没有一个返回正确的键:(在这种情况下应该是 0)
这不返回任何内容:
$mapkey = $data['srv']['map_image'];
$ikey = array_search($mapkey, $data['srv']['maps']);
if ($ikey !== FALSE) {
// Match made.
}
当它应该是“0”时,我得到了“3”,来自这个:
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
)
)
)
)
【问题讨论】:
-
第四个好像完全糊涂了..
-
您好,第四个的唯一问题是我直接从 php 手册 (php.net/manual/en/function.array-search.php) 中复制和粘贴...。它被评为最佳答案??