ホームページ  >  記事  >  バックエンド開発  >  PHP 多次元配列のソート問題 2 次元配列の項目に基づくソート

PHP 多次元配列のソート問題 2 次元配列の項目に基づくソート

高洛峰
高洛峰オリジナル
2016-12-22 11:10:19976ブラウズ

PHP 組み込み関数 array_multisort では、各配列が同じサイズである必要があります
$areas は、人数と時間を含む領域の 2 次元配列です ここで、これら 2 つの数値を降順に並べ替える必要があります

foreach($areaArray as &$areas) { 
$times = $numbers = array(); 
foreach($areas as $province => $v) { 
$times[$province] = $v['times']; 
$numbers[$province] = $v['numbers']; 
} 
array_multisort($times, SORT_DESC, $numbers, SORT_DESC, $areas); 
}

たとえば、次のような複数の配列があります。

$arr = array( 
‘d' => array(‘id' => 5, ‘name' => 1, ‘age' => 7), 
‘b' => array(‘id' => 2,'name' => 3,'age' => 4), 
‘a' => array(‘id' => 8,'name' => 10,'age' => 5), 
‘c' => array(‘id' => 1,'name' => 2,'age' => 2) 
);

必須 2 次元配列内の年齢項目を並べ替えます。
PHP の組み込み関数 array_multisort() を使用する必要があります。マニュアルを参照してください。
カスタム関数:

function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC){ 
if(is_array($multi_array)){ 
foreach ($multi_array as $row_array){ 
if(is_array($row_array)){ 
$key_array[] = $row_array[$sort_key]; 
}else{ 
return false; 
} 
} 
}else{ 
return false; 
} 
array_multisort($key_array,$sort,$multi_array); 
return $multi_array; 
} 
//处理 
echo “<pre/>”; 
print_r(multi_array_sort($arr,&#39;age&#39;));exit; 
//输出 
Array 
( 
[c] => Array 
( 
[id] => 1 
[name] => 2 
[age] => 2 
) 
[b] => Array 
( 
[id] => 2 
[name] => 3 
[age] => 4 
) 
[a] => Array 
( 
[id] => 8 
[name] => 10 
[age] => 5 
) 
[d] => Array 
( 
[id] => 5 
[name] => 1 
[age] => 7 
) 
) 
written by 大宇 
0


PHP の多次元配列の並べ替えに関するその他の問題については、PHP の中国語 Web サイトにある 2 次元配列の項目に応じた並べ替えに関する関連記事に注意してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。