2011-05-19 77 views
0

我有以下的數組:分裂陣列同樣:

$array = array(1,0,0,0,1,1,1,1,0,1,1,1,1,0,1,1,0,1,0,0,1,0,1); 

我想,使得每個陣列包含七個或以下的值向上將它分成單獨的陣列。

因此,例如,第一個數組將變成:

$one = array(1,0,0,0,1,1,1) 
$two = array(1,0,1,1,1,1,0) 
$three = array(1,1,0,1,0,0,1); 
$four = array(0,1); 

而且你會怎麼算1次發生在一個陣列的數量?

回答

6

array_chunk()是你在找什麼。

$splitted = array_chunk($array, 7); 

對於計數的發生,我會很懶。如果您的陣列只包含1 S或0 S,然後進行簡單array_sum()會做:

print array_sum($splitted[0]); // for the first chunk 
+1

PHP的陣列功能從未停止驚奇(在「我不能相信他們居然不嫌麻煩把在」的一種方式)。 – 2011-05-19 23:42:40

+0

+1因懶惰而承認它哈哈 – Ascherer 2011-05-20 00:04:11

4

我希望讓每個數組包含七個或以下的值向上將它分成單獨的陣列。

使用array_chunk(),其中明確提出了這一目的。

另外你如何計算1次出現在數組1中的次數?

使用array_count_values()

$one = array(1,0,0,0,1,1,1); 
$one_counts = array_count_values($one); 
print_r($one_counts); 

// prints 
Array 
(
    [0] => 3 
    [1] => 4 
) 
0

假設你要保留數組的內容,我會使用array_slice()來提取數組元素的需要數量,增加每個時間,直到所需的計數「$偏移」陣列用盡了。

至於你的第二個問題,請嘗試:

$num_ones=count(preg_grep(/^1$/,$array));