亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

首頁 php教程 PHP開發(fā) php中array_slice和array_splice函數(shù)解析

php中array_slice和array_splice函數(shù)解析

Mar 18, 2017 pm 04:10 PM

本文主要介紹了php中array_slice和array_splice函數(shù),感興趣的可以圍觀一下,

array_slice和array_splice函數(shù)是用在取出數(shù)組的一段切片,array_splice還有用新的切片替換原刪除切片位置的功能。類似javascript中的Array.prototype.splice和Array.prototype.slice方法。

array_slice

array array_slice ( array $array , int $offset [, int $length = NULL [, bool $preserve_keys = false ]] )

傳回數(shù)組中指定下標offset和長度length的子數(shù)組切片。

參數(shù)說明
設(shè)第一個參數(shù)陣列的長度為num_in。

offset

如果offset是正數(shù)且小於length,則傳回數(shù)組會從offset開始;如果offset大於length,則不操作,直接回傳。如果offset是負數(shù),則offset = num_in+offset,如果num_in+offset == 0,則將offset設(shè)為0。

length

如果length小於0,那麼會將length轉(zhuǎn)為num_in - offset + length;否則,如果offset+length > array_count,則length = num_in - offset。如果處理後length還是小於0,則直接回傳。

preserve_keys

預(yù)設(shè)為false,預(yù)設(shè)不保留數(shù)字鍵值原順序,設(shè)為true的話會保留數(shù)組原來的數(shù)字鍵值順序。

使用實例

<?php
$input = array("a", "b", "c", "d", "e");
 
$output = array_slice($input, 2);   // returns "c", "d", and "e"
$output = array_slice($input, -2, 1); // returns "d"
$output = array_slice($input, 0, 3);  // returns "a", "b", and "c"
 
print_r(array_slice($input, 2, -1)); // array(0 => &#39;c&#39;, 1 => &#39;d&#39;);
print_r(array_slice($input, 2, -1, true)); // array(2 => &#39;c&#39;, 1 => &#39;d&#39;);

運行步驟

處理參數(shù):offset、length

移動指針到offset指向的位置

從寫個元組

array_splice

array array_splice ( array &$input , int $offset [, int $length = 0 [, mixed $replacement = array() ]] )

刪除input中從offset開始length個元素,如果有replacement參數(shù)的話用replacement數(shù)組替換刪除掉的元素。

php中array_slice和array_splice函數(shù)解析參數(shù)說明

?array_splice函數(shù)中的offset和length參數(shù)跟array_slice函數(shù)中的用法一樣。

replacement

如果這個參數(shù)設(shè)定了,那麼函數(shù)將使用replacement數(shù)組來替換。

如果offset和length指定了沒有任何元素需要移除,那麼replacement會被插入到offset的位置。

如果replacement只有一個元素,可以不用array()去包著它。

使用範例

<?php
$input = array("red", "green", "blue", "yellow");
array_splice($input, 2);
// $input變?yōu)?array("red", "green")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, -1);
// $input變?yōu)?array("red", "yellow")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 1, count($input), "orange");
// $input變?yōu)?array("red", "orange")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, -1, 1, array("black", "maroon"));
// $input為 array("red", "green",
//     "blue", "black", "maroon")
 
$input = array("red", "green", "blue", "yellow");
array_splice($input, 3, 0, "purple");
// $input為 array("red", "green",
//     "blue", "purple", "yellow");

原始碼解讀

?在array_splice中,有這麼一段程式碼:

/* Don&#39;t create the array of removed elements if it&#39;s not going
  * to be used; e.g. only removing and/or replacing elements */
 if (return_value_used) { // 如果有用到函數(shù)返回值則創(chuàng)建返回數(shù)組,否則不創(chuàng)建返回數(shù)組
   int size = length;
 
   /* Clamp the offset.. */
   if (offset > num_in) {
     offset = num_in;
   } else if (offset < 0 && (offset = (num_in + offset)) < 0) {
     offset = 0;
   }
 
   /* ..and the length */
   if (length < 0) {
     size = num_in - offset + length;
   } else if (((unsigned long) offset + (unsigned long) length) > (unsigned) num_in)     {
     size = num_in - offset;
   }
 
   /* Initialize return value */
   array_init_size(return_value, size > 0 ? size : 0);
   rem_hash = &Z_ARRVAL_P(return_value);
 }
array_splice函數(shù)回傳的是刪除的切片。這段程式碼的意思是,如果array_splice需要回傳值,那麼才創(chuàng)建回傳數(shù)組,否則不創(chuàng)建,以免浪費空間。這也是一個編程小技巧,僅在需要的時候才返回。例如在函數(shù)中使用$result = array_splice(...),那麼return_value_used就是true。


總結(jié)

到此本文結(jié)束,在平時編程中,應(yīng)當像這兩個函數(shù)實現(xiàn)時的做法一樣,將最特殊的情況先處理掉,然後再繼續(xù),以免做了多餘的判斷;有需要保存新變數(shù)的時候才申請新的空間,不然會造成浪費。

感謝閱讀,希望能幫助大家,謝謝大家對本站的支持!

更多php中array_slice和array_splice函數(shù)解析相關(guān)文章請關(guān)注PHP中文網(wǎng)!


相關(guān)文章:

php數(shù)組函數(shù)序列之a(chǎn)rray_slice()

php array_slice函數(shù)序列之a(chǎn)rray_slice()

php array_slice函數(shù)的使用以及參數(shù)詳解

php 組
本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72