假設我有以下數組$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