在之前的文章《PHP數(shù)組學(xué)習(xí)之怎么去除任意元素》中,我們介紹了使用array_splice()
函數(shù)刪除數(shù)組的一個(gè)或多個(gè)元素的方法。這次我們繼續(xù)PHP數(shù)組的學(xué)習(xí),介紹一下截取數(shù)組,獲取部分元素的方法,感興趣的朋友可以學(xué)習(xí)了解一下~
在之前的學(xué)習(xí)中,我們了解到截取字符串、獲取子串可以使用substr()和mb_substr()。那么如果是截取數(shù)組、返回部分?jǐn)?shù)組元素呢?我們要怎么操作?下面給大家介紹兩種方法。
方法1:使用array_splice()函數(shù)
對(duì)的,array_splice()函數(shù)!我們知道array_splice()函數(shù)可以添加、刪除和替換數(shù)組元素,怎么又可以截取數(shù)組了呢?
那是因?yàn)閍rray_splice()函數(shù)在刪除數(shù)組的一部分元素時(shí),會(huì)將這些被刪除的元素組成為一個(gè)新數(shù)組,然后返回這個(gè)新數(shù)組;因此array_splice()函數(shù)可以用來截取數(shù)組片段。
我們來看下面一個(gè)小例子:
<?php header("Content-type:text/html;charset=utf-8"); $arr = array(10,12,20,25,24); echo "原數(shù)組:"; var_dump($arr); echo "截取的數(shù)組片段:"; $result = array_splice($arr,2); //截取從下標(biāo)2開始的全部數(shù)組元素 var_dump($result); $arr = array(10,12,20,25,24); $result = array_splice($arr,1,2);//截取從下標(biāo)1開始的兩個(gè)元素 var_dump($result); ?>
輸出結(jié)果為:
OK!使用array_splice($array,$start,$length)
函數(shù)我們可以根據(jù)數(shù)組下標(biāo)($start
的值),截取指定長(zhǎng)度($length
的值)的數(shù)組片段。要記住array_splice()函數(shù)會(huì)改變?cè)瓟?shù)組!
因?yàn)閍rray_splice()函數(shù)的刪除功能在之前的文章中詳細(xì)敘述過了,這里就不具體介紹了,不懂的可以去看《PHP數(shù)組學(xué)習(xí)之怎么去除任意元素》。接下來我們了解第二種截取數(shù)組的方法!
方法二:使用array_slice()函數(shù)
array_slice()函數(shù)就是PHP提供的用來截取數(shù)組的一個(gè)函數(shù),可以從數(shù)組中提取出一個(gè)片段。下面我們來了解一下array_slice()函數(shù):
array_slice($array,$start,$length,$preserve)
該函數(shù)支持2個(gè)必需的參數(shù):$array
和$start
,兩個(gè)可省略的參數(shù)$length
和$preserve
。
參數(shù)$array
就不必介紹了吧,參數(shù)$start
用于指定開始截取的位置(下標(biāo)),參數(shù)$length
表示截取長(zhǎng)度(如果省略,則會(huì)從指定下標(biāo)開始一直截取到數(shù)組末尾)。
<?php header("Content-type:text/html;charset=utf-8"); $arr = array(10,12,20,25,24); echo "原數(shù)組:"; var_dump($arr); echo "截取的數(shù)組片段:"; $result = array_slice($arr,2); //截取從下標(biāo)2開始的全部數(shù)組元素 var_dump($result); $result = array_slice($arr,1,2); //截取從下標(biāo)1開始的兩個(gè)元素 var_dump($result); ?>
輸出結(jié)果為:
可以看出,在截取數(shù)組操作上,array_slice()函數(shù)和array_splice()函數(shù)的功能是類似的;但array_slice()函數(shù)不會(huì)改變?cè)瓟?shù)組!
參數(shù)$start
有3種取值情況:
-
為0,
-
為正數(shù),則從前往后截取。
-
為負(fù)數(shù),則從距離 $array 末端
-start
的位置開始(即按絕對(duì)值從數(shù)組右側(cè)開始向左側(cè)定位),從后往前截取。例如-2
意味著從數(shù)組的倒數(shù)第二個(gè)元素開始。
<?php header("Content-type:text/html;charset=utf-8"); $arr = array(10,12,20,25,24); echo "原數(shù)組:"; var_dump($arr); echo "截取的數(shù)組片段:"; $result = array_slice($arr,2); var_dump($result); $result = array_slice($arr,-2); var_dump($result); ?>
輸出結(jié)果為:
參數(shù)$length
也有3種取值情況:
-
如果 length 為正數(shù),那么表示截取的元素個(gè)數(shù);
-
如果 length 為負(fù)數(shù),那么截取的片段將終止在距離數(shù)組末端 length 的位置;
-
如果省略,那么將從 start 位置開始,一直截取到數(shù)組的末尾。
<?php header("Content-type:text/html;charset=utf-8"); $arr = array(10,12,20,25,24); echo "原數(shù)組:"; var_dump($arr); echo "截取的數(shù)組片段:"; $result = array_slice($arr,1,1); var_dump($result); $result = array_slice($arr,1,-1); var_dump($result); ?>
輸出結(jié)果為:
參數(shù)$preserve
表示是否保留原來的鍵名,默認(rèn)值為false,也即不保留;如果設(shè)置為 true,將保留原有的鍵名。
<?php header("Content-type:text/html;charset=utf-8"); $arr = array(10,12,20,25,24); echo "原數(shù)組:"; var_dump($arr); echo "截取的數(shù)組片段:"; $result = array_slice($arr,1,1,true); var_dump($result); $result = array_slice($arr,1,-1,true); var_dump($result); ?>
輸出結(jié)果為:
好了就說到這里了,有其他想知道的,可以點(diǎn)擊這個(gè)哦?!?→php視頻教程
最后給大家推薦一個(gè)PHP數(shù)組的免費(fèi)視頻教程:PHP函數(shù)之a(chǎn)rray數(shù)組函數(shù)視頻講解,快來學(xué)習(xí)吧!