Pythonのzip()
関数は、複数のコレクションの要素をパラレルに取り出すことができる。
1 2 3 |
zip(['one', 'two', 'three'], [1, 2, 3]) ↓ [('one', 1), ('two', 2), ('three', 3)] |
PHPでは、array_map()
関数を使って同様のことができる。
1 2 3 |
array_map(null, ['one', 'two', 'three'], [1, 2, 3]) ↓ [['one', 1], ['two', 2], ['three'm 3]] |
以下はコードで確認した例。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php $a1 = ['one', 'two', 'three']; $a2 = [1, 2, 3]; print_r(array_map(null, $a1, $a2)); // Array // ( // [0] => Array // ( // [0] => one // [1] => 1 // ) // // [1] => Array // ( // [0] => two // [1] => 2 // ) // // [2] => Array // ( // [0] => three // [1] => 3 // ) // // ) |
これをforeachに入れて各要素を配列で受け取れば、複数配列の要素をパラレルに得ることができる。
1 2 3 4 5 6 7 8 9 10 11 |
<?php $a1 = ['one', 'two', 'three']; $a2 = [1, 2, 3]; foreach (array_map(null, $a1, $a2) as [$e1, $e2]) { echo $e1 .':' . $e2 . PHP_EOL; } // one:1 // two:2 // three:3 |