0

私は非常に単純なインデックス付き配列を持っています:

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によるコメントは正しいです。それらは7つのグループになっているので、2番目、3番目、5番目の要素ごとに必要です。次に、2をスキップして、プロセスを最初からやり直します。提案されているように、 array_chunkを使用します。すべての回答をありがとう。

4

6 に答える 6

1

このようなもの?

$i = 0;

foreach($array as $value) {
    if ($i++ % 2 == 0 || $i++ % 3 == 0 || $i++ % 5 == 0) {
        echo $value;
    }
}
于 2013-03-21T21:02:59.650 に答える
0

2つの異なるアプローチ:すべてのエントリをループして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]
于 2013-03-21T21:03:27.400 に答える
0
foreach( array_chunk( $array, 7) as $row) {
    echo $row[1] . ' , ' . $row[2] . ' , ' . $row[4] . "\n";
}
于 2013-03-21T21:27:51.043 に答える
0

PHP についてはよくわかりませんが、正しく理解できれば、次のようにインデックス 2、3、5、およびおそらくそれ以上を連結する必要があります。

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

したがって、連結する必要があるインデックスの配列を作成して、最初の 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ではないことは知っています...しかし、それはアイデアを示していると思います)

別の進行が必要な場合は、次の質問に答える必要があります: 前の値を使用して次の値を計算するにはどうすればよいですか? 次に、作業を行うアルゴリズムを構築できます。

これがお役に立てば幸いです。

于 2013-03-21T21:08:04.290 に答える
0

手順 2-1-2、2-1-2 でシーケンスを実行する必要があります。ダブルループ、ループ+ケース...でこれを行うことができます

于 2013-03-21T21:04:51.153 に答える