代码之家  ›  专栏  ›  技术社区  ›  Geoff_S

为HTML依赖项重新排序数组元素

  •  0
  • Geoff_S  · 技术社区  · 6 年前

    我的前端模板上有一些HTML格式,这取决于数组上的foreach循环的结果,在本例中,为了获得正确的格式,它希望面板的\u 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 回复  |  直到 6 年前
        1
  •  1
  •   dWinder Dharman    6 年前

    你可以使用 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 所以你只需继续使用你的原始代码