php连续循环遍历数组

php连续循环遍历数组,php,arrays,Php,Arrays,我想知道PHP中是否内置了一个函数,我可以利用该函数在数组中循环,并重置到开始位置以再次继续循环 这将是使用PHP函数创建的SVG的颜色数组。我想我的最大值应该是X,但我想确定如果我有超过X,我会用颜色代码重新启动 下面是我的代码,但不知道是否有一个内置函数来完成这项工作 $color_array = array( 1 => '#00cc00', 2=> '#B45F04', 3=> '#0101DF', 4=> '#B40486', 5=> 'F1F105', 6

我想知道PHP中是否内置了一个函数,我可以利用该函数在数组中循环,并重置到开始位置以再次继续循环

这将是使用PHP函数创建的SVG的颜色数组。我想我的最大值应该是X,但我想确定如果我有超过X,我会用颜色代码重新启动

下面是我的代码,但不知道是否有一个内置函数来完成这项工作

$color_array = array( 1 => '#00cc00', 2=> '#B45F04', 3=> '#0101DF', 4=> '#B40486', 5=> 'F1F105', 6=>'F10505');
$num_color_array = count($color_array); //get number of elements

foreach(loop through array 1){ //psuedo code
    $array_color_index = 1; 

    foreach(loop throguh array 2){ //psuedo code
        if($array_color_index > $num_color_array){ 
            $array_color_index = 1; //if > num elements reset
        }
        $color_fill = $color_array[$array_color_index]; //pull the color code

        fill:'.$color_fill.' //use the color code here...simplified for example...

        $array_color_index++; //increment index     
    }
}
尝试使用模数:

$color_fill = $color_array[$array_color_index % $num_color_array];
$color_array = array('#f00', '#0f0', '#00f');
$elements = get_some_colorable_elements();
// For each element in $elements, the modulus returns a value between 0 and the size of $color_array
for ($i = 0; $i < count($elements); $i += 1) {
  $colorForElement = $color_array[$i % count($color_array)];
  fill_color_for_element($colorForElement);
}

您将得到索引的剩余部分除以元素总数。。因此,当索引=元素数,余数=0时,它会循环。

如果在数组中循环,然后使用类似于foreach()的任何东西从头开始,那么实际上就是在创建一个无限循环。我不认为有一个基本的功能,但它是相当容易作出一个。当然,你必须用休息来结束它

这样的函数就可以了(它是一个生成器,所以需要最新的PHP版本)

您可以这样使用它:

foreach( constantLoop( $array ) as $value );

但是你必须打破,因为正如名字所说,它将永远保持循环。

你可以使用类似的东西(使用模数):

$color_array=array('f00','0f0','00f');
$elements=获取一些可着色的元素();
//对于$elements中的每个元素,模数返回一个介于0和$color\u数组大小之间的值
对于($i=0;$i

据我所知,没有专门用于此目的的内置函数(模数除外).

听起来像是
while
循环的完美情况。我担心使用while循环会比我上面概述的占用更多的处理能力。我应该特别指出,两个foreach循环通过的数组与颜色数组不同,因此它们将自行终止。
$color_array = array('#f00', '#0f0', '#00f');
$elements = get_some_colorable_elements();
// For each element in $elements, the modulus returns a value between 0 and the size of $color_array
for ($i = 0; $i < count($elements); $i += 1) {
  $colorForElement = $color_array[$i % count($color_array)];
  fill_color_for_element($colorForElement);
}