配列値を他の配列値に結合しながらループする

私は2つの配列を持っている

$a = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p');
$b = array('1','2','3','3','4','2','1','4','2','2');

配列$ aには時々より多くの値があります。

私はそれらの2つの配列に参加する必要がありますが、結果として、配列$ aの値がある限り、配列$ bの値をループする必要があります。

結果は次のようになるはずです

a1
b2
c3
d3
e4
f2
g1
h4
i2
j2
k1//array $b starts to loop here
l2
m3
n3
o4
p2
0
range()を見てください。
追加された 著者 str,

4 答え

モジュロ(php:を使用すると、この種のもの:

$i = 0;
$count = count($b);
foreach($a as $val1){
    echo $val1, $b[$i++ % $count];
   //if you don't want to echo, do something else :)
}

$ i$ count に達するとすぐに、 $ i%$ count0

3
追加された
受け入れられた答えを考えてみましょう。私はちょうど数分待つ必要があります:)
追加された 著者 Goldie,
@ゴールドクール、私が助けることができるうれしい:)
追加された 著者 middus,
$i = 0;
$result = array();

foreach ($a as $val) {
  if (isset($b[$i])) {
    $result[] = $val.$b[$i++];
  } else {
    $result[] = $val.$b[0];
    $i = 1;
  }
}

print_r($result);
1
追加された

2つの配列の長さやインデックスに関係なく機能するバージョンは次のとおりです:

function zip(array $a1, array $a2) {
    $a1 = array_values($a1);//to reindex
    $a2 = array_values($a2);//to reindex

    $count1 = count($a1);
    $count2 = count($a2);

    $results = array();
    for($i = 0; $i < max($count1, $count2); ++$i) {
        $results[] = $a1[$i % $count1].$a2[$i % $count2];
    }

    return $results;
}

See it in action.

1
追加された

これは $ a と同じ大きさになるまで $ b "ループオーバー"を行います。

<?php
    $a = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p');
    $b = array('1','2','3','3','4','2','1','4','2','2');
    while(count($b) < count($a))
        $b = array_merge($b, array_splice($b, 0, count($a) - count($b)));

    print_r($a);
    print_r($b);
?>
0
追加された
@ジョンyikes、良い点。一定。
追加された 著者 Alex Turpin,
@ジョン実際、ゴールディのソリューションが最高です。
追加された 著者 Alex Turpin,
count($ a)/ count($ b)> = 2 の場合、 $ a に100個のアイテムがあり、 $ b コード>)?
追加された 著者 Jon,
@ Xeon06:まだそれでも十分ではありませんIMHO:配列が数値的に索引付けされていないと正しく動作しません。b)を展開したい場合は、正しく動作させるのが大変な作業になります。 $ a が短くなったとき(ここは必要ありませんが、関数のような非対称な動作はバグジェネレータです)、c)重複した要素:これをしなくても、1行のループ本体を書くことができます。思考のためのちょっとした食べ物 - これも私が考えたアプローチです:)
追加された 著者 Jon,
$ b$ a の半分以上の場合にのみ動作します: codepad.org/Oa3EdqVk
追加された 著者 jprofitt,
PHP - 日本のコミュニティ [ja]
PHP - 日本のコミュニティ [ja]
4 参加者の

このグループではPHPについて話します。 パートナー:kotaeta.com