【问题标题】:foreach loop return problemforeach 循环返回问题
【发布时间】:2010-12-08 08:48:52
【问题描述】:

嗨,我写了一个函数来在数组中查找,但是当循环找到匹配的东西时它不起作用,它没有重新调整真值检查到最后任何想法

function findinArray($find,$array){
    foreach($find as $key => $value){
        if (in_array($find,$array)) {
            return true;
        }else{
            return false;
    }       }
}
if(findinArray(array("a","b"),array("a")){
         echo "Match";
}

谢谢

【问题讨论】:

  • 函数应该做什么? 找到条件是什么?

标签: php loops foreach


【解决方案1】:

一个函数只能返回一次,所以你的函数总是在第一次迭代时返回。如果您希望它在第一次匹配时返回 true,如果未找到匹配则返回 false,请尝试以下版本。

function findinArray($find, $array) {
    foreach ($find as $value) {
        if (in_array($value, $array)) {
            return true;
        }
    }
    return false;
}

if (findinArray(array("a","b"), array("a")) {
    echo "Match";
}

(您在使用 foreach 中的值时也犯了错误,并且您忘记了 }

【讨论】:

  • 这就是我需要的,谢谢,是的,有错误,但这是在发帖时产生的,我现在明白了
  • 你的函数根本不使用$array。
【解决方案2】:

应该是in_array($value, $array)。但你可以这样做count(array_intersect())

【讨论】:

    【解决方案3】:

    您在in_array() 中传递第一个参数一个数组,它应该是值 改成

    function findinArray($find,$array){
        foreach($find as $key => $value){
            if (in_array($value,$array)) {
                return true;
            }
            return false;
        }      
    }
    

    【讨论】:

    • 如果第一次迭代不匹配,它总是返回 false
    猜你喜欢
    • 1970-01-01
    • 2011-08-08
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2020-02-28
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多