PHP 使用 asort、arsort 重新 index key

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

作者: Tsung

對新奇的事物都很有興趣, 喜歡簡單的東西, 過簡單的生活.

發表迴響

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料