我想找到一个给定的值并返回密钥,我已经尝试了很多方法来解决这个问题但没有工作。 我花了很多时间测试不同的解决方案但到目前为止没有运气,但这是一项非常简单的任务。 以下是我尝试过的一些函数但没有返回正确的键:(在这种情况下应该是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
)
)
)
)
答案 0 :(得分:0)
在第一个中,您直接在包含0,1等键的$data['srv']['maps']
内搜索。但你必须在所有0,1内进行搜索才能失败。
在第二个中,如果你删除第一个条件,它将起作用。 Bcoz在第一个条件下,您正在将值与数组进行比较($value
)是一个数组。
上面的错误你也在做第三次。
第四是太复杂了。最好的是你从第二个条件中移除第一个条件。更新:根据您的更新,为了进行比较,它们应该是相同的情况; - )
答案 1 :(得分:0)
好的我已经找到了解决方案。
foreach ($data['srv']['maps'] as $key => $value) {
$mapkey = strtolower($data['srv']['map_image']);
if ($mapkey == $data['srv']['maps'][$key]['map_image']) {
$imgkey = $key;
}
}
echo '<pre>';
print_r($imgkey);
echo '</pre>';
返回&#39; 0&#39;
我遇到的问题是代码放置的位置以及我无法返回$ key的事实,因为它破坏了其余的代码。