我有一个多维数组,我想检查一个数组键是否包含多于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();
}
答案 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();
}