我有一个数组,我循环.我有另一个数组,我需要逐个选择它,但它需要继续循环,以防它到达数组的末尾.这里要说清楚一些代码:
$mainArray = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$size = count($mainArray);
$circular = array('A', 'B', 'C');
for($i = 0; $i < $size; $i++) {
echo $mainArray[$i] . ' = ' . $circular[$i] . ', ';
}
Run Code Online (Sandbox Code Playgroud)
现在上面的代码打印出来:
1 = A, 2 = B, 3 = C, UNDEFINED INDEX ERROR
Run Code Online (Sandbox Code Playgroud)
我需要打印的是这样的:
1 = A, 2 = B, 3 = C, 4 = A, 5 = B, 6 = C, 7 = A, 8 = B, 9 = C, 10 = A
Run Code Online (Sandbox Code Playgroud)
是否有PHP的内置函数将数组转换为循环数组?我想我需要使用模块化操作符来实现这一点.
Chr*_*lsh 21
获取圆形数组的大小($circsize)然后$i根据它修改值并将其用作索引:
$mainArray = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$size = count($mainArray);
$circular = array('A', 'B', 'C');
$circsize = count($circular);
for($i = 0; $i < $size; $i++) {
echo $mainArray[$i] . ' = ' . $circular[$i % $circsize] . ', ';
}
Run Code Online (Sandbox Code Playgroud)
我喜欢Chris Walsh,但这里是一个替代品,也适用于关联数组(非整数索引).可能会缩短:
foreach($mainArray as $main) {
if(($circ = current($circular)) === false) {
$circ = reset($circular);
}
next($circular);
echo "$main=$circ ";
}
Run Code Online (Sandbox Code Playgroud)
如果您不止一次需要这个,可能是一个功能:
function circular(&$array) {
if(($result = current($array)) === false) {
$result = reset($array);
}
next($array);
return $result;
}
Run Code Online (Sandbox Code Playgroud)
然后使用:
foreach($mainArray as $main) {
$circ = circular($circular);
echo "$main=$circ ";
}
Run Code Online (Sandbox Code Playgroud)