在本篇中將介紹數組的截?。╝rray_slice),等分(array_chunk)和替換(array_splice)以及 array_slice和array_splice的區別!
在前面的三篇文章《如何對PHP數組進行排序?》《PHP數組隨機亂序和反序》以及《PHP數組的倒序排列》中,我們分別介紹了數組的排序,其中包括數組的升序,降序以及亂序和反序,相信大家對數組的排序有一定了解了,今天我們來介紹另外的一組數組函數!
什么是截取數組?(array_slice)
array_slice從數組中取出一段元素,第一個參數是原數組,第二個參數是開始下標(牢記數組是從0開始的),第三個參數是從下標開始取出的元素個數,如果不設置,默認一直取到數組末尾!
array_slice語法格式如下:
array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )
參數 | 描述 | array | 輸入的數組。 | offset | 如果 offset 非負,則序列將從 array 中的此偏移量開始。如果 offset 為負,則序列將從 array 中距離末端這么遠的地方開始。 | length | 如果給出了 length 并且為正,則序列中將具有這么多的單元。如果給出了 length 并且為負,則序列將終止在距離數組末端這么遠的地方。如果省略,則序列將從 offset 開始一直到 array 的末端。 | preserve_keys | 注意 array_slice() 默認會重新排序并重置數組的數字索引。你可以通過將preserve_keys 設為 TRUE 來改變此行為。 |
具體我們看下面的實例代碼:
<?phpheader("Content-Type:text/html; charset=utf-8");$arr=array("PHP ", "www.49028c.com", "百度","搜狗");$array = array_slice($arr,1,2); //從下標1開始截取,取2個元素,賦給新的變量print_r($array);?>
輸出的結果為:
上面的實例示我們指定截取多少個元素的,如果我們不指定呢?也就是array_slice()的第三個參數不寫會是什么情況?下面我們一起看下示例代碼,還是以上面代碼為例:
<?phpheader("Content-Type:text/html; charset=utf-8");$arr=array("PHP ", "www.49028c.com", "百度","搜狗");$array = array_slice($arr,1); //從下標1開始截取,截取到最后一個元素,賦給新的變量print_r($array);?>
輸出的結果為:
看到這大家應該就明白了,當array_slice()的第三個參數不寫,那么就會默認截取到數組的最后一個元素!array_slice()函數的第二參數就是指定從哪個下標開始截?。?/p>
這里要說明一下:
array_slice僅僅是將數組中的一段取出重新賦值給別的數組,而原數組是不受影響的,也就是說,上面代碼數組中的 www.49028c.com和百度依然存在的!
什么是替換部分數組?(array_splice)
array_splice() 函數與 array_slice() 函數類似,選擇數組中的一系列元素,但不返回,而是刪除它們并用其它值代替,換句話說就是去掉數組中的某一部分并用其它值取代。
array_splice語法格式如下:
array array_splice ( array &$input , int $offset [, int $length = count($input) [, mixed $replacement = array() ]] )
把 input 數組中由 offset 和 length 指定的單元去掉,如果提供了 replacement參數,則用其中的單元取代。
注意:
1.如果 replacement 不是數組,會被 類型轉換 成數組 (例如: (array) $replacement)。 當傳入的 replacement 是個對象或者 NULL,會導致未知的行為出現。
2.注意 input 中的數字鍵名不被保留。
下面我們來看具體的示例代碼:
<?phpheader("Content-Type:text/html; charset=utf-8");$arr=array("PHP", "語言", "百度","搜狗");print_r($arr);echo "<br>";array_splice($arr,1,2,array("PHP ","www.49028c.com","VeVb.com"));print_r($arr);?>
輸出的結果為:
從上面的實例中可以看出 數組的“語言”,“百度”被“PHP ”,“www.49028c.com”,"VeVb.com"替代換區。
上面的示例中,我們是將替換后將其賦給一個新的數組,那么如果沒有新的數組呢?我們看下面的實例:
<?phpheader("Content-Type:text/html; charset=utf-8");$arr=array("PHP", "語言", "百度","搜狗");print_r($arr);echo "<br>";array_splice($arr,1,2);print_r($arr);?>
輸出的結果為:
從輸出的結果中就可以看出,如果沒有新的數組,那么就相當于 array_slice,切掉相關位置的數組!
array_splice和array_slice兩個函數的相同點和不同點
相同點:
可以實現對數組,進行指定下標位置,和指定元素個數進行數組切割
(其實,就是刪除指定的數組元素)
不同點:
array_slice 是傳值函數, 原數組不會變化,切割后,可以賦給一個新數組!
array_splice是傳址函數,會直接修改原數組,可以設置新的元素,去替換被切割掉的數組元素!
什么是等分數組?(array_chunk)
array_chunk()函數是將數組中的元素數量等分的切割成一個二維數組,其中每個數組的單元數目由第二個參數 size 決定。數組的最后一個單元數目可能會少于 size 個,下面我們一起看下語法格式:
下面我們直接用實例代碼帶大家了解:
<?phpheader("Content-Type:text/html; charset=utf-8");$input_array = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];$new_array = array_chunk($input_array, 3);print_r($new_array);?>
輸出結果為:
在下一篇文章中我們將介紹合并數組的函數,具體詳情閱讀《PHP數組如何合并?》
【相關教程推薦】
1. 相關專題推薦:《php數組(Array)》
以上就是PHP數組的截取,等分以及替換部分數組的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答