我有一个非常基本的问题。这可能是一个非常糟糕的问题,但我只想清除我的困惑。
function check_array($user_value,$array)
{
foreach ($array as $key => $value) {
if($value==$user_value)
{
return true;
}
return false;
}
//return false;
}
为什么此函数总是返回false。
例如,如果我有$numbers = array(1,2,3)
。如果我将2与此数组匹配,它应该返回true,否则返回false。但为什么它总是假的?
答案 0 :(得分:2)
返回false是在错误的地方,它应该是你评论出来的地方,但不是在其他地方。
function check_array($user_value,$array)
{
foreach ($array as $key => $value) {
if($value==$user_value)
{
return true;
}
}
return false;
}
如果返回在另一个地方,则在第一个数组单元格中找不到您的值后,它将返回false。
答案 1 :(得分:2)
为什么它总是假的?
尝试自己充当计算机“执行”此功能。
如果数组的第一个元素等于$user_value
,它将返回true。如果不是 - 它将在循环中向下移动并返回false。
您可能希望检查数组的所有元素是否相等。在这种情况下,您需要使用:
function check_array($user_value,$array)
{
foreach ($array as $key => $value) {
if($value==$user_value)
{
return true;
}
}
return false;
}
答案 2 :(得分:2)
当php已经有in_array
时,你不需要为它创建一个函数你可以像在一行中一样使用它
<input name='$date' type='submit' value='Details' id='$date' onClick='javascript:show_details(this);'>
如果找到值,它将返回true,如果未找到则返回false。 你不需要遍历数组
答案 3 :(得分:0)
循环内部返回false。这意味着如果第一个元素不匹配,它将返回false。它甚至不会检查数组的第二个元素
答案 4 :(得分:0)
您的函数将返回false,除非它与数组中的第一个值匹配。
这是因为目前您的逻辑顺序错误,如果数组中的第一个值与$ user_value不匹配,则该函数返回false。
您可以通过在循环下方移动return false;
代码行来解决此问题。
现在循环将遍历数组中的所有值。如果匹配一个,它将返回true,如果它已经检查了所有值并且没有匹配,那么它将返回false。
function check_array($user_value,$array)
{
foreach ($array as $key => $value) {
if($value==$user_value) return true;
}
return false;
}
这应该清除代码中的逻辑错误。然而,我对Veerendra的in_array()
答案进行了投票,因为这意味着不需要任何循环,从而减少了代码。