PHP:防止重复嵌套的foreach多维数组

时间:2015-10-02 10:54:55

标签: php arrays multidimensional-array foreach

我一直在尝试循环嵌套foreach循环,但问题是第一个foreach循环记录重复为第二个foreach循环的计数 第一个数组来自mysql数据和我在下面写的第二个数组,在我的情况下,我想用第一个foreach循环结果循环第二个数组中的颜色预设。我在数组方面不太好,请帮我解决这个问题。 这是第二个数组和代码:

$colors = array ( 
        0 => array ("id"=> 0, "dark" => "#16a085", "light" => "#1ABC9C"),
        1 => array ("id"=> 1, "dark" => "#2980B9", "light" => "#3498DB "),
 );
$unique = array_unique($colors, SORT_REGULAR);
          foreach ($skill as $skilldata) {
                 foreach ($unique as $key => $val) {

  <div class="skillbar clearfix " data-percent="<?php echo $skilldata['js_skill_perc'].'%'; ?>">
    <div class="skillbar-title" style="background: <?php echo $val['dark']?>;">
    <span><?php echo $skilldata['js_skill_title']; ?></span></div>
    <div class="skillbar-bar" style="background-color: <?php echo $val['light']?>; width: <?php echo $skilldata['js_skill_perc'].'%'; ?>;"></div>
    <div class="skill-bar-percent"><?php echo $skilldata['js_skill_perc'].'%'; ?></div>
 </div>

<?php }} ?>

输出应该是:HTML5(绿色)PHP(蓝色)和SEO(绿色) 但这就是输出的样子:

enter image description here

1 个答案:

答案 0 :(得分:2)

如果您只需要逐行切换颜色,可以使用CSS(请参阅:nth-child(even):nth-child(odd))或者使用PHP执行此操作:

$colors = array(
    ...
);
$colors_count = count($colors);
$colors_index = 0;
foreach ($skill as $skilldata) {

    $color = $colors[$colors_index % $colors_count];
    $colors_index++;

    echo ... whatever using $color ...
}