我有两个数组
$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有时会有更多值。
我需要加入这两个数组但是为了得到结果我需要循环数组$ b的值,只要有数组$ a的值。
结果应该是这样的
a1
b2
c3
d3
e4
f2
g1
h4
i2
j2
k1 // array $b starts to loop here
l2
m3
n3
o4
p2
答案 0 :(得分:3)
使用modulo (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 % $count
就会再次从0
开始。
答案 1 :(得分:1)
$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);
答案 2 :(得分:1)
无论两个数组的长度或索引是什么,这都是有效的版本:
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 强>
答案 3 :(得分:0)
这会使$b
“循环”,直到它与$a
一样大。
<?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);
?>