当找到userid的值时,我正在使用此函数搜索(最高)数组键:
function array_search_value($needle,$haystack) {
foreach($haystack as $key => $value) {
if(in_array($needle, $value)) return $key;
}
}
我的数组看起来像这样(它是由一个简单的查询生成的):
Array
(
[0] => Array
(
[0] => 1
[userid] => 1
[1] => 2
[score1] => 2
[2] => 0
[score2] => 0
)
[1] => Array
(
[0] => 3
[userid] => 3
[1] => 2
[score1] => 2
[2] => 2
[score2] => 2
)
[2] => Array
(
[0] => 4
[userid] => 4
[1] => 1
[score1] => 1
[2] => 1
[score2] => 1
)
[3] =>
)
此代码:
echo array_search_value(4, $r)
返回2,这是正确的。
寻找1给出0,这是正确的。
但是,当我搜索2(无法找到)时,它返回0。 当然,这是不正确的......我想要它做的是什么都不返回,而不是0。 我尝试通过添加“== true”来调试函数,但这也无效。
任何人都知道如何解决这个问题?
非常感谢!
答案 0 :(得分:1)
当您搜索2
时,您将获得0
,因为您有$haystack[0][score1] = 2
。您需要指定您正在寻找userid
而不是其他任何内容。
foreach($haystack as $key => $value) {
if ($value['userid'] == $needle) {
return $key;
}
}
答案 1 :(得分:1)
当我搜索2(无法找到)时,它返回0.这当然不正确......
查看提供的数组,是正确。值2
中显示的值0
:
[0] => Array
(
[0] => 1
[userid] => 1
[1] => 2 // here
[score1] => 2 // and here
[2] => 0
[score2] => 0
)
如果您只想查看userid
密钥,那么您不能只使用in_array()
,但必须这样做:
<?php
function array_search_value($needle,$haystack) {
foreach($haystack as $key => $value) {
if($value['userid'] === $needle) return $key;
}
return null; // not found
}
if (array_search_value(2, $r) === null) { /* doesn't happen */ }