选择元素时,将数组视为圆形数组 - PHP

GGi*_*Gio 12 php arrays

我有一个数组,我循环.我有另一个数组,我需要逐个选择它,但它需要继续循环,以防它到达数组的末尾.这里要说清楚一些代码:

$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)


Abr*_*ver 6

我喜欢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)