重新排序html依赖项的数组元素

时间:2019-01-10 16:03:47

标签: php html arrays

我在前端模板上有一些HTML格式,这取决于数组上的foreach循环的结果,在此示例中,为了获得正确的格式,它期望panel_type_id的顺序为4,6,3否则会导致格式错误。

如果按4、6、3的顺序添加面板,则没有问题。

是否有一种方法可以对加载时的数组进行重新排序,无论其遵循此顺序如何?

  <div class="row middle">
  <?php foreach($panelResult as $PR): ?>
  <?php if($PR['panel_type_id'] == 4){ ?>
  <!-- Left -->
  <div class="col-lg-6"  >
    <div class="row" style="height:50%; padding-bottom: 15px;">
        <div class="col-lg-12" style="height:100%;">
            <div style="/*background-color: rgba(255, 255, 255, 0.5);*/ height: 100%; ">
        <?php echo $PR['content']?>
        </div>
        </div>
    </div>
  <?php } elseif($PR['panel_type_id'] == 6){?>
    <div class="row" style="height:50%; padding-top: 15px;">
        <div class="col-lg-12" style="height:100%;">
            <div style="/*background-color: rgba(255, 255, 255, 0.5);*/ height: 100%;">
          <?php echo $PR['content']?>
        </div>
        </div>
    </div>
  </div>
  <?php } elseif($PR['panel_type_id'] == 3){?>
  <div class="col-lg-6" >
        <div style="/*background-color: rgba(255, 255, 255, 0.5);*/ height: 100%; ">
        <?php echo $PR['content']?>
      </div>
  </div>
  <?php } ?>
  <?php endforeach; ?>
  </div><!--end row middle-->

1 个答案:

答案 0 :(得分:1)

您可以使用usort并定义自己的函数。

请考虑以下内容:

$panelResult = array(["panel_type_id" => 3, "content" => "CCC"], ["panel_type_id" => 4, "content" => "BBB"], ["panel_type_id" => 6, "content" => "AAA"]);

function cmp($a, $b) {
    $goodOrder = [4,6,3];
    return array_search($a["panel_type_id"], $goodOrder) - array_search($b["panel_type_id"], $goodOrder);
}

usort($panelResult, "cmp");

现在$panelResult的顺序为:4, 6, 3,因此您只需继续使用原始代码即可