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
- )
- */
- ?>