为什么这个函数总是返回false?

时间:2015-12-24 08:58:01

标签: php function

我有一个非常基本的问题。这可能是一个非常糟糕的问题,但我只想清除我的困惑。

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。但为什么它总是假的?

5 个答案:

答案 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()答案进行了投票,因为这意味着不需要任何循环,从而减少了代码。