我在使用以下代码时遇到了什么问题?我想比较数组$my_id
中是否存在元素$arr
。如果存在则返回TRUE
否则返回FALSE
。
for($i=0;$i<$cnt;$i++)
{
if($arr[$i] == $my_id)
{
return TRUE;
}
else
{
return FALSE;
}
}
答案 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中的一个。