php - Repeat array values

匿名 (未验证) 提交于 2019-12-03 02:34:02

问题:

I have an array;

[1]=>   array(5) {     ["chid"]=>         string(1) "1"     ["chtext"]=>         string(9) "Excellent"     ["chvotes"]=>         string(2) "13"     ["weight"]=>         string(1) "1"     ["colour"]=>         string(7) "#b3c7e0"   } 

The colour is added to the array from a text field. The array could be any length but the colour is at a fixed length of 4.

$poll = $entity->choice; // Array $poll_colours = array(); // Create new array for colours $colours = $entity->field_poll_colours['und'][0]['value']; // Get value from text field $poll_colours = explode(',', $colours); // Explode from comma  foreach($poll as $key => $value) {   $poll[$key]['colour'] = $poll_colours[0];   $poll[$key]['colour'] = ltrim($poll[$key]['colour']);   unset($poll_colours[0]);   sort($poll_colours); } unset($poll_colours); 

What I want to achieve is, if the length of the array is more than 4, then repeat the colours (1-4).

Desired result:

[1]=>   array(5) {     ["chtext"]=> "A"     ["colour"]=> "Cyan"   } [2]=>   array(5) {     ["chtext"]=> "B"     ["colour"]=> "Magenta"   } [3]=>   array(5) {     ["chtext"]=> "C"     ["colour"]=> "Yellow"   } [4]=>   array(4) {     ["chtext"]=> "D"     ["colour"]=> "Black"   } [5]=>   array(5) {     ["chtext"]=> "E"     ["colour"]=> "Cyan" // Repeat colour[1]   } [6]=>   array(5) {     ["chtext"]=> "F"     ["colour"]=> "Magenta" // Repeat colour[2]   } ... // Repeat colour[3] ... // Repeat colour[4] ... // Repeat colour[1] etc... 

回答1:

Use the modulus operator to rotate through the colours array.

$colour_count = count($poll_colours); $poll_colours = array_map('ltrim', $poll_colours); sort($poll_colours); foreach($poll as $key => $value) {   $poll[$key]['colour'] = $poll_colours[$key % $colour_count]; } 


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!