首頁  >  文章  >  後端開發  >  PHP函數實用技巧:array_chunk()

PHP函數實用技巧:array_chunk()

王林
王林原創
2023-06-20 08:58:373995瀏覽

PHP語言中的陣列(array)是一種非常實用的資料類型,可以用於儲存多個資料並進行批次操作。但是,有時候我們需要將大的數組拆分成多個小的數組,以便更好地進行處理。這時候,PHP函數中的array_chunk()就派上用場了。本文將分享如何使用array_chunk()函數進行陣列分塊運算和一些實用技巧。

一、array_chunk()函數概述

array_chunk()函數的作用是將一個陣列依指定大小分塊,傳回一個二維陣列。其函數定義如下:

array array_chunk ( array $array , int $size [, bool $preserve_keys = false ] )

#參數說明:

  • $array :必需,要進行分塊操作的陣列。
  • $size:必需,一個整數,指定每個區塊的長度。
  • $preserve_keys:可選,一個布林值,表示是否保留原始數組的鍵名,預設為false,即不保留。

此函數傳回一個二維數組,其中每個子數組的長度為$size,最後一個子數組的長度可以小於$size。

二、array_chunk()函數的實例

為了更好地理解array_chunk()函數的用法,我們可以看下面這個實例。

首先,我們定義一個包含10個元素的陣列:

<?php
  $arr = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j');
?>

我們可以使用array_chunk()函數將其分成長度為3的小數組:

<?php
  $result = array_chunk($arr, 3);
  print_r($result);
?>

結果如下:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )

    [1] => Array
        (
            [0] => d
            [1] => e
            [2] => f
        )

    [2] => Array
        (
            [0] => g
            [1] => h
            [2] => i
        )

    [3] => Array
        (
            [0] => j
        )

)

可以看到,原始數組被分成了4個長度為3的子數組。最後一個子數組只有一個元素,因為原數組中只剩下了一個元素。

三、array_chunk()函數的實用技巧

  1. 陣列分頁

我們可以使用array_chunk()函數將一個陣列分頁,將每頁的資料條目數指定為每個區塊的長度。這對於製作簡單的分頁系統非常有用,例如,我們可以將總共50個資料分成每頁10個,然後分別展示到5個頁面上。

<?php
  $arr = range(1,50);
  $pages = array_chunk($arr,10);
  print_r($pages);
?>

結果如下:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
            [4] => 5
            [5] => 6
            [6] => 7
            [7] => 8
            [8] => 9
            [9] => 10
        )

    [1] => Array
        (
            [0] => 11
            [1] => 12
            [2] => 13
            [3] => 14
            [4] => 15
            [5] => 16
            [6] => 17
            [7] => 18
            [8] => 19
            [9] => 20
        )

    [2] => Array
        (
            [0] => 21
            [1] => 22
            [2] => 23
            [3] => 24
            [4] => 25
            [5] => 26
            [6] => 27
            [7] => 28
            [8] => 29
            [9] => 30
        )

    [3] => Array
        (
            [0] => 31
            [1] => 32
            [2] => 33
            [3] => 34
            [4] => 35
            [5] => 36
            [6] => 37
            [7] => 38
            [8] => 39
            [9] => 40
        )

    [4] => Array
        (
            [0] => 41
            [1] => 42
            [2] => 43
            [3] => 44
            [4] => 45
            [5] => 46
            [6] => 47
            [7] => 48
            [8] => 49
            [9] => 50
        )

)

每個子陣列都包含10個元素,就像每一頁包含10個資料一樣。

  1. 陣列分割

假設我們有一個由逗號分隔的字串,我們想要將其拆分成數組,並且每次拆分10個元素,可以使用array_chunk()函數來完成這個操作。

<?php
  $str = "1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20";
  $arr = explode(',', $str);
  $result = array_chunk($arr, 10);
  print_r($result);
?>

結果如下:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
            [4] => 5
            [5] => 6
            [6] => 7
            [7] => 8
            [8] => 9
            [9] => 10
        )

    [1] => Array
        (
            [0] => 11
            [1] => 12
            [2] => 13
            [3] => 14
            [4] => 15
            [5] => 16
            [6] => 17
            [7] => 18
            [8] => 19
            [9] => 20
        )

)
  1. 陣列隨機排序

如果我們想要打亂一個陣列中元素的排序,可以先使用array_chunk()將陣列分塊,然後打亂每一塊的元素,最後把所有區塊的元素連接在一起,即可完成隨機排序。

<?php
  $arr = range(1, 20);
  $chunk_arr = array_chunk($arr, 5);
  foreach ($chunk_arr as $key => &$value) {
    shuffle($value);
  }
  $result = call_user_func_array('array_merge', $chunk_arr);
  print_r($result);
?>

結果如下:

Array
(
    [0] => 1
    [1] => 4
    [2] => 2
    [3] => 3
    [4] => 5
    [5] => 9
    [6] => 10
    [7] => 7
    [8] => 6
    [9] => 8
    [10] => 11
    [11] => 12
    [12] => 14
    [13] => 13
    [14] => 16
    [15] => 15
    [16] => 17
    [17] => 20
    [18] => 19
    [19] => 18
)

我們先將原始數組分成了4個長度為5的子數組,然後對每個子數組內部進行了打亂排序,最後使用array_merge()函數將所有的子數組合併在一起,打亂了原始數組的順序。

四、總結

array_chunk()函數是PHP語言中的一個非常實用的函數,能夠幫助我們將一個大的數組分成多個小的數組,為邏輯處理提供了很大的便利。本文介紹了array_chunk()函數的作用和用法,並分享了一些陣列分塊的實用技巧。希望本文對PHP語言的學習者有幫助。

以上是PHP函數實用技巧:array_chunk()的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn