簡體   English   中英

PHP帶鍵值的排序數組

[英]PHP Sort array with key value

我不願意用鍵值對數組進行排序。 有了這個下面的數組,我需要按site_category對其進行排序,並且需要輸出如下

例:

Shopping
   Amazon
Social
   Amoeblo
   American express

數組值是

(
    [0] => stdClass Object
        (
            [site_id] => 1
            [site_name] => Amazon
            [site_img] => http://localhost/faves/resource/img/sites/icon/amazon.png
            [site_category] => Shopping
        )

    [1] => stdClass Object
        (
            [site_id] => 2
            [site_name] => Ameblo
            [site_img] => http://localhost/faves/resource/img/sites/icon/ameblow.png
            [site_category] => Social
        )

    [2] => stdClass Object
        (
            [site_id] => 3
            [site_name] => American Express
            [site_img] => http://localhost/faves/resource/img/sites/icon/americanexpress.png
            [site_category] => Social
        )


)

有什么解決的建議嗎?

實際上是按子值對php多維數組進行排序的副本

function cmp($a, $b) {
        return $a->site_category - $b->site_category;
}
usort($arr, "cmp");

您可以使用foreach和ksort

讓$ your_array為您上面提到的數組

$res_array    = array();
foreach($your_array as $val){
   $res_array[$val->site_category][] = $val->site_name;
}
ksort($res_array);

print_r($res_array);

或在php中搜索multisort,這將解決您的問題:)

$tmp = array();
$i = 0;

for($i=0;$i<count($carriers);$i++){

    for($j=$i+1;$j<count($carriers);$j++){

        if($carriers[$i]['price']>$carriers[$j]['price']){

            $tmp = $carriers[$i];
            $carriers[$i] = $carriers[$j];
            $carriers[$j] = $tmp;
        }
    }
}       
return $carriers;

這將按價格鍵對$carriers數組進行排序。

暫無
暫無

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

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