PHP數組的截取,等分以及替換部分數組

來源:互聯網
上載者:User
PHP數組的截取,等分以及替換部分數組

在本篇中將介紹數組的截取(array_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("topic.alibabacloud.com",  "www.php.cn",  "百度","搜狗");$array = array_slice($arr,1,2); //從下標1開始截取,取2個元素,賦給新的變數print_r($array);?>

輸出的結果為:

上面的執行個體示我們指定截取多少個元素的,如果我們不指定呢?也就是array_slice()的第三個參數不寫會是什麼情況?下面我們一起看下範例程式碼,還是以上面代碼為例:

<?phpheader("Content-Type:text/html; charset=utf-8");$arr=array("topic.alibabacloud.com",  "www.php.cn",  "百度","搜狗");$array = array_slice($arr,1); //從下標1開始截取,截取到最後一個元素,賦給新的變數print_r($array);?>

輸出的結果為:

看到這大家應該就明白了,當array_slice()的第三個參數不寫,那麼就會預設截取到數組的最後一個元素!array_slice()函數的第二參數就是指定從哪個下標開始截取!

這裡要說明一下:

array_slice僅僅是將數組中的一段取出重新賦值給別的數組,而原數組是不受影響的,也就是說,上面代碼數組中的 www.php.cn和百度依然存在的!

什麼是替換部分數組?(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("topic.alibabacloud.com","www.php.cn","php.cn"));print_r($arr);?>

輸出的結果為:

從上面的執行個體中可以看出 數組的“語言”,“百度”被“topic.alibabacloud.com”,“www.php.cn”,"php.cn"替代換區。

上面的樣本中,我們是將替換後將其賦給一個新的數組,那麼如果沒有新的數組呢?我們看下面的執行個體:

<?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)》

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.