0

アイテムの配列をループして、別の配列から値を与えることができる必要がありますが、それについて頭を悩ませることはできません。

マイアレイ

$myarray = array('a','b','c'); 

foreach ループがあり、合計 6 つの項目をループするとします。

次の出力を取得するにはどうすればよいですか

item1 = a
item2 = b
item3 = c
item4 = a
item5 = b
item6 = c

私のコードは次のようになります。

$myarray = array('a','b','c'); 
$items = array(0,1,2,3,4,5,6);
foreach ($items as $item) {
   echo $myarray[$item];
}

オンラインの例。 http://codepad.viper-7.com/V6P238

もちろん、無限にループできるようにしたい

4

3 に答える 3

6
$myarray = array('a','b','c'); 
$count = count($myarray);
foreach ($array as $index => $value) {
  echo $value . ' = ' . $myarray[$index % $count] . "\n";
}

%モジュロ演算子です。戻ります

$aの余りを$bで割ったもの。

どういう意味ですか

0 % 3 = 0
1 % 3 = 1
2 % 3 = 2
3 % 3 = 0
4 % 3 = 1

等々。$myarray私たちの場合、これは取得したい配列のインデックスを反映しています。

于 2012-08-01T17:40:48.410 に答える
1

任意の数のループを実行する場合は、モジュラス演算子を使用してキーを循環できます。

$loop = //how much you want the loop to go
//...
for ($i = 0, $i < $loop, $i++) {
    $key = $i % count($myarray);
    echo $i, ' = ', $myarray[$key];
}
于 2012-08-01T17:40:43.517 に答える
1

あなたが探しているのはモジュロ演算子だと思います。次のようなものを試してください。

for ($i = 1; $i <= $NUMBER_OF_ITEMS; $i++) {
    echo "item$i = ".$myarray[$i % count($myarray)]."\n";
}
于 2012-08-01T17:41:29.570 に答える