假设我有以下数组$diff
。PHP搜索数组内循环
a, a, a, a, b, b, b, a, a, b, b, b, a, a, a, b
A represents a value inside $diff.
B represents an Array inside $diff.
现在我都数不过来A
,如果它发生在其序列more than two times
和is not an Array
(instead a value
)。否则,无视它。
对于上面的输入,代码应该具有如下功能
[a] = not an array; 0
[a,a] = not an array; 0
[a,a,a] = not an array; 3
[a,a,a,a] = not an array; 4
[b] = array;
[b,b] = array;
[b,b,b] = array;
[a] = not an array; 0
[a,a] = not an array; 0
[b] = array;
[b,b] = array;
[b,b,b] = array;
[a] = not an array; 0
[a,a] = not an array; 0
[a,a,a] = not an array; 3
[b] = array;
这里是我的尝试,但它不工作!价值得到改变,因为该值会被替换。
<?php
foreach($diff as $key => $val) {
if (!is_array($diff[$key])) { // THIS MEANS THAT THE CURRENT ELEMENT IS NOT AN ARRAY.
if(is_array($diff[$key-1])) { //START OF SEQ. IF THE PREVIOUS ELEMENT IS AN ARRAY AND CURRENT ELEMENT IS NOT AN ARRAY.
$SEQ_START=$key;
$n=1;
for($i=0; $i<=count($diff); $i+=1) { // I AM CHECKING HERE IF THE NEXT 3 ELEMENTS are NOT ARRAY, HENCE I CAN INCREMENT IT
if(!is_array($diff[$SEQ_START+$i])) $n+=1;
else $n=0;
}
}
}
}
?>
我明白计数的逻辑,但是您要查找的最终结果是什么?连续片段的数量(> 2)或连续片段中的元素数量(> 2)? (如果前者,答案是2,如果后者,答案是7) – Grexis 2011-12-22 10:06:58
我需要在上面的例子中答案是7。 – SupaOden 2011-12-22 10:12:57