在数组中查找值

时间:2011-07-02 10:07:20

标签: php for-loop return

我在使用以下代码时遇到了什么问题?我想比较数组$my_id中是否存在元素$arr。如果存在则返回TRUE否则返回FALSE

for($i=0;$i<$cnt;$i++)
{
    if($arr[$i] == $my_id)
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
}

5 个答案:

答案 0 :(得分:5)

您可以将其替换为......

return in_array($my_id, $arr);

...假设如果第一个元素不匹配,你真的不想返回FALSE

如果这实际上是你想要的,你可以使用......

return $arr[0] == $my_id;

如果您希望保持代码大致完整,只需将return FALSE移到循环体外即可。

答案 1 :(得分:3)

您遇到的问题是您没有完全循环遍历数组。在数组中的第一项之后返回true / false,而不考虑[0]

之后的后续数组项

答案 2 :(得分:1)

好吧,我相信你应该删除else语句,除非你总是在数组中只有一个元素。我的意思是 - 从你正在展示的例子中,你正在退出循环。我怀疑这是你想要的。

答案 3 :(得分:0)

如果您只是需要知道,如果某个值在给定数组中

in_array($value, $array);

也许你想要获得该值的索引(第一次出现)

$index = array_search($value, $array);
if ($index === false) {
  // Not in array
} else {
  echo $array[$index];
}

答案 4 :(得分:0)

您的代码中的错误是在$arr[$i] != $my_id上返回false。该算法应如下所示:

for($i=0;$i<$cnt;$i++)
{
    if($arr[$i] == $my_id)
    {
        return TRUE;
    }
}
return FALSE;

P.S。这不是PHP语言中此问题的最佳解决方案。你应该使用alex中的一个。