foreach循环返回问题

时间:2010-12-08 08:48:52

标签: php loops foreach

嗨我写了一个函数来查找数组,但是当循环找不到匹配的函数时它不能正常工作它没有重新调整真值检查到底有什么想法

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";
}

感谢

3 个答案:

答案 0 :(得分:14)

一个函数只能返回一次,所以你的函数总会在第一次迭代时返回。如果您希望它在第一个匹配时返回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中的值时也犯了错误,而您忘记了}

答案 1 :(得分:5)

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

答案 2 :(得分:1)

你传递的第一个参数是in_array()中的一个数组,它应该是值 将其更改为

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