PHP-Array-Sortierung nach Implementierungscode für mehrere Felder

little bottle
Freigeben: 2023-04-05 22:06:01
nach vorne
2882 Leute haben es durchsucht

本文主要讲述了用PHP语言实现数组按多个字段排序问题,附上代码,有需要的朋友可以看一下。

题目:

一个二维数组,需要按照库存量排序,然后再按照门店距离排序。

发现了这样一个这样子的方法:


$array1 = array(
      0=>array('id'=>8,'name'=>'Apple','age'=> 18),
      1=>array('id'=>8,'name'=>'Bed','age'=>17),
      2=>array('id'=>5,'name'=>'Cos','age'=>16),
      3=>array('id'=>5,'name'=>'Cos','age'=>14)
);
function sortArrByManyField(){
  $args = func_get_args(); // 获取函数的参数的数组
  if(empty($args)){
    return null;
  }
  $arr = array_shift($args);
  if(!is_array($arr)){
    throw new Exception("第一个参数不为数组");
  }
  foreach($args as $key => $field){
    if(is_string($field)){
      $temp = array();
      foreach($arr as $index=> $val){
        $temp[$index] = $val[$field];
      }
      $args[$key] = $temp;
    }
  }
  $args[] = &$arr;//引用值
  call_user_func_array('array_multisort',$args);
  return array_pop($args);
}
$arr = sortArrByManyField($array1,'id',SORT_ASC,'name',SORT_ASC,'age',SORT_DESC);
print_r($arr);
Nach dem Login kopieren

结果如下:


<span style="color: #008080;"> array(4) {<br>      [0]=>array(3) {<br>            ["id"]=>int(5)<br>            ["name"]=>string(3) "Cos"<br>            ["age"]=>int(16)<br>          }<br>      [1]=>array(3) {<br>            ["id"]=>int(5)<br>            ["name"]=>string(3) "Cos"<br>            ["age"]=>int(14)<br>          }<br>      [2]=>array(3) {<br>            ["id"]=>int(8)<br>            ["name"]=>string(5) "Apple"<br>            ["age"]=>int(18)<br>          }<br>      [3]=>array(3) {<br>            ["id"]=>int(8)<br>            ["name"]=>string(3) "Bed"<br>            ["age"]=>int(17)<br>      }<br>    }</span><span style="color: #008080;"><br></span>
Nach dem Login kopieren

【相关教程:PHP视频教程

Das obige ist der detaillierte Inhalt vonPHP-Array-Sortierung nach Implementierungscode für mehrere Felder. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage