簡體   English   中英

PHP搜索過濾器按字母順序對結果排序

[英]PHP Search filter sort results alphabetically

我正在研究一個帶有搜索功能的Webcatalog。 我正在Joomla中使用軟件Eshop。 制造商有一個過濾器功能,但是這些結果不會按字母順序顯示。

我一直在尋找解決方案,但無法正常工作。 這是代碼:

<?php
if (!empty($filterData['manufacturer_ids'])){
    $manufacturerIds = $filterData['manufacturer_ids'];
}
else{
    $manufacturerIds = array();
}

foreach ($manufacturers as $manufacturer){?>
    <li>
        <label class="checkbox">
            <input class="manufacturer" onclick="eshop_ajax_products_filter('manufacturer');" type="checkbox" name="manufacturer_ids[]" value="<?php echo $manufacturer->manufacturer_id; ?>" <?php if (in_array($manufacturer->manufacturer_id, $manufacturerIds)) echo 'checked="checked"'; ?>>
            <?php echo $manufacturer->manufacturer_name; ?><span class="badge badge-info"><?php echo $manufacturer->number_products;?></span>
        </label>
    </li>
<?php }?>

誰能幫我?

這是當前視圖

您可以使用sort函數,建議您使用SORT_STRING可選參數為您提供以下內容。

$manufacturers = sort($manufacturers, SORT_STRING);

此函數對數組進行排序。 完成此功能后,元素將從最低到最高排列。

...

SORT_STRING-比較項目為字符串

編輯:

確認數據結構后,這是一個對象數組,需要自定義排序功能。 因此,您應該使用usort()

該函數將使用用戶提供的比較函數按其值對數組進行排序。 如果您希望排序的數組需要按照一些非平凡的條件進行排序,則應使用此函數。

因此,您首先定義用於比較manufacturer_name屬性的字符串的函數。

function cmp($a, $b)
{
    return strcmp($a->manufacturer_name, $b->manufacturer_name);
}

usort($manufacturers , "cmp");

暫無
暫無

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

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