PHP 使用 asort、arsort 排序後,想要將 key 由 0 或 1 開始重新排序,要怎麼做呢?
- 註:asort、arsort 會將 Array 的 Value 排序,但是 Array Key(Index) 還是原始的值,若要將 Array Key 的值也修改 0 ~ N,或者 要某個數字開頭 ~ N, 要怎麼做呢?
PHP 使用 asort、arsort 重新 index key
若要將陣列從 0 開始重新排起,可以使用 array_values() 先將 Value 拉出來,在指定到新的陣列,就會從 0 ~ N 開始排序。
若陣列想要從 N 開始 (此範例從 1 開始),然後開始往後排 N 個,可以使用 array_combine() 將 陣列 1 ~ N 與 值合併在一起。
範例:
<?php $arr = [44, 55, 33, 11, 22]; asort($arr); // or arsort($arr); print_r($arr); /* Array ( [3] => 11 [4] => 22 [2] => 33 [0] => 44 [1] => 55 ) */ print_r(array_values($a)); // 從 0 開始 /* Array ( [0] => 11 [1] => 22 [2] => 33 [3] => 44 [4] => 55 ) */ print_r(array_combine(range(1, count($arr)), array_values($arr))); // 從 1 開始,或者想從 n 開始 /* Array ( [1] => 11 [2] => 22 [3] => 33 [4] => 44 [5] => 55 ) */ ?>