php メソッドで配列をソートし、キー値を変更しないようにします: まず配列のキー名を取り出し、次にキー名をソートし、最後に対応するキーに従って値を割り当てます。名前を指定して新しい配列を形成し、返すだけです。
実装コード:
(推奨チュートリアル: php ビデオ チュートリアル)
$data = array( 1001 => array( 'age' => 22, 'name' => '鸠摩智' ), 1007 => array( 'age' => 21, 'name' => '慕容复' ), 1004 => array( 'age' => 27, 'name' => '乔帮主' ) ); //根据字段age对数组$data进行降序排列 $data = arraySort($data, "age", "desc" ); print_r($data); /** * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序 * @param array $arr 将要排序的数组 * @param string $keys 指定排序的key * @param string $type 排序类型 asc | desc * @return array */ function arraySort($arr, $keys, $type = 'asc') { $keysvalue = $new_array = array(); foreach ($arr as $k => $v) { $keysvalue[$k] = $v[$keys]; } if ($type == 'asc') { natsort($keysvalue); } if ($type == 'desc') { natsort($keysvalue); $keysvalue = array_reverse($keysvalue, TRUE); // 将原数组中的元素顺序翻转,如果第二个参数指定为 true,则元素的键名保持不变 } foreach ($keysvalue as $k => $v) { $new_array[$k] = $arr[$k]; } return $new_array; }
ここで arraySort 関数を簡略化することもできます。処理結果は同じです:
/** * @desc arraySort php二维数组排序 按照指定的key 对数组进行自然排序 * @param array $arr 将要排序的数组 * @param string $keys 指定排序的key * @param string $type 排序类型 asc | desc * @return array */ function arraySort($arr, $keys, $type = 'asc') { $keysvalue = $new_array = array(); foreach ($arr as $k => $v) { $keysvalue[$k] = $v[$keys]; } $type == 'asc' ? asort($keysvalue) : arsort($keysvalue); foreach ($keysvalue as $k => $v) { $new_array[$k] = $arr[$k]; } return $new_array; }
出力結果:
キー名は残ります変更せず、実装 原理は非常に単純で、最初にキー名を取り出し、次にキー名を並べ替え、次に対応するキー名に値を代入して新しい配列を形成し、それを返します。
ご覧のとおり、ここでは主に PHP のいくつかのコアソート関数を使用します。
asort() は、キー値の昇順で連想配列をソートします。
arsort() は、キー値の降順で連想配列を並べ替えます。
natsort() は「自然なソート」、つまり 1 から 9 までの数字のソート方法と、a から z までの文字のソート方法を実装しており、短いものが優先されます。配列のインデックスはセル値に関連付けられたままになります。
注: 自然並べ替えアルゴリズムでは、数値 2 は数値 10 より小さくなります。コンピューターの並べ替えアルゴリズムでは、「10」の最初の数字が 2 未満であるため、10 は 2 未満です。
関連する推奨事項: php トレーニング
以上がPHPで配列をソートし、キー値を変更しないようにする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。