2017-11-14 15 views
1

私は検索機能を備えた小さなWebcatalogを開発中です。私はJoomlaでソフトウェアEshopを使用しています。メーカーのフィルタ機能がありますが、これらの結果はアルファベット順に表示されません。PHP検索結果をアルファベット順に並べ替える

私は解決策を探しましたが、うまく機能しません。これはコード:

<?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オプションのパラメータを使用することをお勧めし

This is the current view

+0

'sort'関数を使用しようとしましたか? –

答えて

0

$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"); 
+0

正確にこのコードを追加する必要がありますか?私はforeach($メーカーとして$メーカー)の上に追加しようとしましたが、その後、ページにエラーが表示されます – Niels

+0

はい、上記のエラー? – kchason

+0

ウェブサイトのリンクにアクセスした場合、何が起こるか見ることができます – Niels

関連する問題