簡體   English   中英

如何對數組中的每個第二,第三和第五個元素進行運算?

[英]How to operate on every 2nd, 3rd and 5th element in an array?

我有一個非常簡單的索引數組:

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
    ...

我需要將每個第二,第三和第五個鍵值添加到$str

我可以在$str上進行操作,但是我無法將我的小腦袋纏繞在我需要的循環/計數器上,因此,向正確方向輕推將是不錯的選擇。

為了清楚起見,給出上述數組的$str結果看起來像這樣:

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

這是數組的第二,第三和第五個元素,帶有幾個逗號,並添加了換行符,以很好的方式在數組中一直重復。

編輯:

我的問題有一個錯誤。 salathe的評論在下面是正確的。 它們以七個為一組,因此我需要每個第二,第三和第五個元素,然后跳過2並重新開始該過程。 如建議的那樣 ,我將使用array_chunk 感謝您提供所有答案。

像這樣嗎

$i = 0;

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

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

因此,要檢查數字是否為偶數(正好可被2整除),您可以

$odd = $number%2;

要給出完整的答案,請在循環中使用此條件(不知道如何使用此條件):

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

兩種不同的方法:循環所有條目並使用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]

您需要按照步驟2-1-2、2-1-2進行操作。 你可以用雙循環,循環+案例...

我不太了解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 ...但是我認為它說明了這個想法)

如果您需要不同的級數,則需要回答以下問題:如何使用以前的值來計算下一個值? 然后,您可以構建一個可以完成工作的算法。

希望這對您有所幫助。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM