2013-03-21 117 views
0

我有一個非常簡單的索引數組:如何操作數組中的每個第2,第3和第5個元素?

Array 
(
    [0] => 1 
    [1] => Buster Posey 
    [2] => SF 
    [3] => C 
    [4] => 16.60 
    [5] => 5 
    [6] => 28 
    [7] => 2 
    [8] => Joe Mauer 
    [9] => Min 
    [10] => C 
    [11] => 57.60 
    [12] => 35 
    [13] => 80 
    ... 

我需要每2,第3和第5鍵值添加到$str

我可以在$str上操作,但我無法將我小小的大腦包裹在我需要的循環/計數器上,所以只需向正確的方向微調即可。

爲了清楚起見,我$str給出了上述陣列的結果會是這個樣子:

Buster Posey, SF, 16.60 
Joe Mauer, Min, 57.60 

這是一對夫婦逗號數組的第2,第3和第5元素和新行添加在在整個陣列中一直重複進行很好的測量。

編輯:

我有我的問題的錯誤。以下salathe的評論是正確的。他們七人一組,所以我需要每個第二,第三和第五個元素,然後跳過2並開始整個過程​​。按照建議,我將使用array_chunk。感謝所有的答案。

+1

你甚至需要一個循環? – 2013-03-21 20:59:07

+0

如果你需要一個循環,那麼你正在考慮某種進展......你正在考慮的進程:'2,3,5,...,n [i] = n [i-1 ] + n [i-2]'? – Barranka 2013-03-21 21:00:56

+0

我不確定。你如何在沒有循環的情況下完成它? – Jeff 2013-03-21 21:01:34

回答

0
foreach(array_chunk($array, 7) as $row) { 
    echo $row[1] . ' , ' . $row[2] . ' , ' . $row[4] . "\n"; 
} 
+0

非常好,nickb。我會給這個旋轉。 – Jeff 2013-03-21 21:29:02

+0

@Jeff - 你可以看到它在[這個演示](http://codepad.org/dq64Vnnc)中工作,它會產生你的確切輸出。 – nickb 2013-03-21 21:35:45

+0

是的,這是完美的。謝謝! – Jeff 2013-03-21 21:37:40

0

您需要使用模運算符(%)。它返回數字除法的其餘部分,並且通常用於檢查數字是否是另一個數字的倍數。

因此,要檢查是一個數字爲偶數(恰好能被2整除),你做

$odd = $number%2; 

要使它成爲一個完整的答案,你用這個標準在循環中(不知道如何這樣做沒有一個):

for($i=0; $i<count($array)-1;$i++){ 
    if($i%5==0) { $str .= $array[$i]; } 
} 
1

這樣的事情?

$i = 0; 

foreach($array as $value) { 
    if ($i++ % 2 == 0 || $i++ % 3 == 0 || $i++ % 5 == 0) { 
     echo $value; 
    } 
} 
0

兩種不同的方法:循環所有條目並使用mod或循環爲每個不同的條件。

所有在一個循環:

foreach ($array as $k => $v){ 
    if ($k % 2 == 0 || $k % 3 == 0 || $k % 5 == 0){ 
     .. do something with $v 
    } 
} 

不同的循環:

for ($i=0; $i<count($array); $i+=2) .. do something with $array[$i] 
for ($i=0; $i<count($array); $i+=3) .. do something with $array[$i] 
for ($i=0; $i<count($array); $i+=5) .. do something with $array[$i] 
0

你需要採取與步驟2-1-2,2-1-2序列。你可以用雙循環,循環+情況來做到這一點...

0

我不太知道PHP,但如果我理解正確的話,你需要連接索引2,3,5,也許更多,下面有進展:

n[0] = 2 
n[1] = 3 
n[2] = 5 
... 
n[i] = n[i-1] + n[i-2] 

所以,你可能需要創建您需要連接索引的陣列,提供了前兩個值(看起來像一個斐波那契數列給我):

n[0] = 2; 
n[1] = 3; 
for(i=2, i<m, i++) { 
    n[i] = n[i-1] + n[i-2]; 
} 

然後,你可以使用這個數組來連接與陣列所需的值:

for(i=0; i<m; i++) { 
    str = concatenate(str, arr[n[i]]); 
} 

(我知道的語法是不是PHP ...但我認爲這說明了想法)

如果你需要一個不同的進程,您需要回答這樣一個問題:我該如何計算下一個值,使用以前的值(s)?然後你可以建立一個算法來完成這項工作。

希望這可以幫助你。

相關問題