【问题标题】:PHP Sort array with key valuePHP排序数组与键值
【发布时间】:2013-01-09 09:55:34
【问题描述】:

我很想用键值对数组进行排序。使用以下数组,我需要按 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 sorting


【解决方案1】:

实际上是Sort php multidimensional array by sub-value的副本

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

【讨论】:

    【解决方案2】:

    你可以使用 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 来解决你的问题 :)

    【讨论】:

      【解决方案3】:
      $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 数组进行排序。

      【讨论】:

        猜你喜欢
        • 2016-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-02
        • 2011-01-17
        • 2017-12-02
        • 2013-09-22
        • 1970-01-01
        相关资源
        最近更新 更多