簡體   English   中英

在PHP中按字母順序對數組進行排序

[英]Sort array alphabetically in PHP

我正在為一家圖書出版公司創建一個網站。 他們有多種不同語言的書籍,並希望顯示每種語言的一些詳細信息。 要檢索每種語言的所有必要信息,請執行以下操作:

  <div class="col-lg-3" align="center">
        <?php
            $fields = get_field_objects();                  
                if ($fields):
                    foreach ($fields as $name => $field):    
                        if (stripos($name, 'isbn') !== false) : ?>
                            <?php $lang = substr($field['name'], strpos($field['name'], "_")); ?>
                            <div class="panel-group">
                                <div class="panel panel-default">
                                    <div class="panel-heading">
                                        <h4 class="panel-title">
                                            <a data-toggle="collapse" href="#collapse1<?php echo $lang ?>">Deutsch/<?php echo substr($field['label'], strpos($field['label'], " ") + 1); ?></a>
                                        </h4>
                                    </div>
                                    <div id="collapse1<?php echo $lang ?>" class="panel-collapse collapse">
                                        <div class="panel-body">
                                      // ... get all neccessary information ...
                                       </div>
                                    </div>
                                </div>
                            </div>
                        <?php endif;
                    endforeach;
                endif; ?>
            </div>

現在我的問題是,如果有人創建了一本書,卻忘記添加一種語言,而是想在將本書保存到數據庫之后添加它,那么字母順序就不再正確了。 因此,我想為$ fields數組添加一個排序功能。

sort($ fields)不起作用,因為執行此操作后,所有內容均為空白。

這是輸出外觀的屏幕截圖。 在此處輸入圖片說明

有時,順序是錯誤的(例如,德語/英語出現在底部)。 因此,我必須對添加第二種語言(德語附近)的部分進行排序。 我添加的部分在這里:

 <h4 class="panel-title">
    <a data-toggle="collapse" href="#collapse1<?php echo $lang ?>">Deutsch/<?php echo substr($field['label'], strpos($field['label'], " ") + 1); ?></a>
 </h4>

有人有什么想法嗎? 請讓我知道代碼是否丟失!

PS我使用的插件是“ Advanced-Custom-Fields”,該插件附帶諸如“ get_field_objects()”之類的功能!

get_field_objects()返回自定義字段對象的數組。 您可以使用uasort按字母順序對其進行排序,如下所示:

$fields = get_field_objects();
uasort($fields,"sort_alphabetically");
function sort_alphabetically($a,$b) {
    return $a['name'] > $b['name'];
}

所以解決我問題的是@LeoTahk建議添加ksort()。

最終代碼:

    <div class="col-lg-3" align="center">
      <?php
         $fields = get_field_objects();
//working solution
         ksort($fields);

         if($fields):
           ....
         endif; ?>
     </div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM