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 與 值合併在一起。

範例:

  1. <?php
  2. $arr = [44, 55, 33, 11, 22];
  3. asort($arr); // or arsort($arr);
  4. print_r($arr);
  5. /*
  6. Array
  7. (
  8. [3] => 11
  9. [4] => 22
  10. [2] => 33
  11. [0] => 44
  12. [1] => 55
  13. )
  14. */
  15. print_r(array_values($a)); // 從 0 開始
  16. /*
  17. Array
  18. (
  19. [0] => 11
  20. [1] => 22
  21. [2] => 33
  22. [3] => 44
  23. [4] => 55
  24. )
  25. */
  26. print_r(array_combine(range(1, count($arr)), array_values($arr))); // 從 1 開始,或者想從 n 開始
  27. /*
  28. Array
  29. (
  30. [1] => 11
  31. [2] => 22
  32. [3] => 33
  33. [4] => 44
  34. [5] => 55
  35. )
  36. */
  37. ?>

作者: Tsung

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

發表迴響

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