遇到in_array的问题

时间:2013-12-19 06:47:31

标签: php arrays

我有一个多维数组,我想检查一个数组键是否包含多于1个值,所以我用count计算每个数组键的所有值并将它放在一个单独的数组中,我得到了:

Array
(
    [0] => 1
    [1] => 4
    [2] => 6
    [3] => 2
)

现在,我的问题是我需要对其进行过滤,以便我可以在数组返回两个以上的值或只返回一个值时创建条件,如果:

Array
(
    [0] => 1
    [1] => 1
    [2] => 1
    [3] => 1
)

到目前为止我有这个代码,但它总是进入我的函数display_single_passage()。我相信我的问题在in_array范围内,但我似乎无法弄清楚如何检查你是否在寻找超过2的数字。

foreach ($passageArray as $sentences) {
            $count = count($sentences);
            $sentenceCount[] = $count; //This is my array of counted values
        }
            if (in_array("/[^2-9]+/", $sentenceCount)) {
                display_multiple_passage(); 
            } else {
                display_single_passage();   
            }

2 个答案:

答案 0 :(得分:1)

我不完全确定你是否真的会搜索数组中的正则表达式,或实际的字符串"/[^2-9]+/"。解决这个问题的简单方法就是自己循环遍历数组,并检查值。

$i = 0;
foreach($sentenceCount as $sentenceLength){
    if($sentenceLength > 1){
        display_multiple_passage();
        break;
    }else{
        $i++;
    }
}
if($i == count($sentenceCount)){
    display_single_passage();   
}

这应该这样做......即使in_array事情有效,它确实会更清晰:S

另外,您可以在第二个代码块中修复if()块的缩进吗? ^ __ ^

答案 1 :(得分:1)

字符串"/[^2-9]+/"永远不会在您的数组中。

示例:

if (count(array_filter($passageArray, function($var) {return count($var) > 1;})) > 0) {
    display_multiple_passage(); 
} else {
    display_single_passage();   
}