我在前端模板上有一些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-->
答案 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
,因此您只需继续使用原始代码即可