この記事で実装する関数は、以前のプロジェクトで発生した MySQL の ORDER BY に似ています。
要件: 2 つの異なるテーブルから 4 つのデータを取得し、配列に統合 (array_merge) し、データの作成時間に従って最初の 4 つのデータを降順に並べ替えます。
この要件が発生した場合、ORDER BY では問題を解決できません。そこでPHPのマニュアルを調べて以下の方法を見つけたのでメモしておきます。
くだらない話はやめてください。コードは次のとおりです。リストは次のとおりです:
コードをコピーします コードは次のとおりです:
/**
* 特定のフィールドに従って 2 次元配列を並べ替えます
* 機能: ユーザーの年齢によって逆順に並べ替えます
* @author ruxing.li
*/
header ('Content-Type: text/ html;Charset=utf-8');
$arrUsers = array(
'id' => 1,
'name' => '张三',
' age' => 25,
),
array(
'id' => 2,
'name' => '李思',
'age' => 23,
),
array(
'id' => 3,
'name' => '王五',
'年齢' => 40,
),
'id' => 4,
'name' => ; '趙劉',
' 年齢' => 31,
),
array(
'id' => 5,
'名前' => '黄七',
' 年齢' => 20 ,
),
);
$sort = array(
'direction' => 'SORT_DESC', //ソート順序フラグ SORT_DESC 降順; SORT_ASC 昇順
'field' => 'age', // ソートフィールド
);
$arrSort = array();
foreach($arrUsers AS $uniqid => $row){
foreach($row AS $key=>$value){
$arrSort[$key][ $uniqid] = $value;
}
}
if($sort['direction']){
array_multisort($arrSort[$sort['field']], constant($sort['direction']), $ arrUsers);
var_dump ($arrUsers);
array (size=5)
0 =>array (size=3)
'id' =>
'name' => 文字列 '黄七' (length=6)
'age' => int 20
1 =>
array (size=3)
'id' => ' => 文字列 '李思' (長さ=6)
'年齢' => int 23
2 =>
配列 (サイズ=3)
'id' => int 1
'名前' => ; 文字列 '张三' (長さ =6)
'年齢' => int 25
配列 (サイズ = 3)
'名前' =>趙劉' (length=6)
'age' => int 31
4 =>
'id' => int 3
'name' => (長さ=6)
'年齢' => int 40
*/
http://www.bkjia.com/PHPjc/779572.html
www.bkjia.com
true
http://www.bkjia.com/PHPjc/779572.html
技術記事
この記事で実装する関数は、以前のプロジェクトで発生した MySQL の ORDER BY に似ています。 要件: 2 つの異なるテーブルから 4 つのデータを取得し、その後...