我想知道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_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);
}
据我所知,没有专门用于此目的的内置函数(模数除外)。
尝试使用模数:
$color_fill = $color_array[$array_color_index % $num_color_array];
你得到索引的余数除以元素总数......所以当索引=元素数时,余数= 0,然后它循环。
如果你遍
历一个数组,然后使用foreach()之类的东西重新开始,你实际上是在创建一个无限循环。我不认为它有一个基本功能,但制作一个相当容易。当然,你必须使用 BREAK 来结束它。
像这样的函数就可以了(它是一个生成器,所以你需要一个最新的PHP版本)
function constantLoop( $array ) {
while(true) {
foreach( $array as $element ) {
yield $element;
}
}
}
你可以像这样使用它:
foreach( constantLoop( $array ) as $value );
但你必须打破,因为顾名思义,它会永远循环下去。