【发布时间】:2012-01-25 23:53:02
【问题描述】:
假设我有以下数组$diff。
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)
-
在上面的例子中我需要答案是 7。