改變PHP數組的大小


1.array_pad函數

<?php

//定義一個數組
$items=array("農葯1"=>"殺蟲劑","農葯2"=>"除草劑","化肥1"=>"化肥");
$result=array_pad($items,4,"其它");
    print_r($result);
?>

顯示:

Array ( [農葯1] => 殺蟲劑 [農葯2] => 除草劑 [化肥1] => 化肥 [0] => 其它 ) 

當array_pad函數中,設定的數組長度小於現有數組時,會輸出什么呢?

1 <?php
2 
3 //定義一個數組
4 $items=array("農葯1"=>"殺蟲劑","農葯2"=>"除草劑","化肥1"=>"化肥");
5 $result=array_pad($items,2,"其它");
6     print_r($result);
7 ?>

結果是不會改變數組,正常輸出數組:

Array ( [農葯1] => 殺蟲劑 [農葯2] => 除草劑 [化肥1] => 化肥 ) 

2.array_splice函數
(1)刪除前兩個數據:

1 <?php
2 
3 //定義一個數組
4 $items=array("殺蟲劑","除草劑","化肥","中間體");
5 $result=array_splice($items,2);
6     print_r($result);
7 ?>

顯示:

Array ( [0] => 化肥 [1] => 中間體 ) 

(2)一個有趣的實驗,首先:

<?php
$a1=array("Dog","Cat","Horse","Bird");
array_splice($a1,2);
print_r($a1);
?>

offset為2,表示從第二個元素開始刪除,結果輸出為:

Array ( [0] => Dog [1] => Cat ) 

但是,如果將array_splice($a1,2); 賦予一個變量——$a2,然后再輸出$a2,那么,就會得到一個相反的結果:

1 <?php
2 $a1=array("Dog","Cat","Horse","Bird");
3 $a2=array_splice($a1,2);
4 print_r($a2);
5 ?>

輸出:

Array ( [0] => Horse [1] => Bird ) 

由此,我們可以得到一個結論,array_splice函數的值,是一個數組,而$a1也是一個數組,經過array_splice函數操作后,數組$a1的大小就發生了改變,一些元素被刪掉了。那些被刪掉的元素就進入了array_splice這個函數里,如果將這個函數賦予給一個變量,如$a2,那么$a2這個數組,就是被刪除掉的值。

(3)刪除從第一個到倒數第一個(第四個)元素之間的所有元素:

1 <?php
2 $a1=array("Dog","Cat","Horse","Bird");
3 array_splice($a1,1,-1);
4 print_r($a1);
5 ?>

顯示:

Array ( [0] => Dog [1] => Bird ) 

來檢驗一下,array_splice函數里,是否含有被刪除的數組元素:

<?php
$a1=array("Dog","Cat","Horse","Bird");
$a2=array_splice($a1,1,-1);
print_r($a2);
?>

顯示出被刪除的兩個元素:

Array ( [0] => Cat [1] => Horse ) 

(4)刪除從第一個到最后一個元素之間的所有元素,並且用*代替。

1 <?php
2 $a1=array("Dog","Cat","Horse","Bird");
3 array_splice($a1,1,2,"*");
4 print_r($a1);
5 ?>

顯示:

Array ( [0] => Dog [1] => * [2] => Bird ) 

(5)刪除從數組末尾,倒數一個元素。並以*代替被刪掉的數據。

1 <?php
2 $a1=array("Dog","Cat","Horse","Bird");
3 array_splice($a1,-1,1,"*");
4 print_r($a1);
5 ?>

應該顯示出:狗,貓,*

Array ( [0] => Dog [1] => Cat [2] => Horse [3] => * ) 

*也可以改成另外一個數組。
(6)刪除數組(假設數組很長,無法數清數組所含元素的個數)倒數兩個元素。

分析:假設數組含有元素n個,那么要刪除的就是第n-1和第n個元素。我們可以用count($a1)得出n,從n-2開始,剔除2個元素即可。

代碼為:

1 <?php
2 $a1=array("Dog","Cat","Horse","Bird");
3 $n1=count($a1);
4 $n1-=2;
5 array_splice($a1,$n1,2);
6 print_r($a1);
7 ?>

顯示:

Array ( [0] => Dog [1] => Cat ) 

驗證一下,如果數組元素有10個,剔除后兩個元素,

1 <?php
2 $a1=array("Dog","Cat","Horse","Bird","5","6","7","8","9","10");
3 $n1=count($a1);
4 $n1-=2;
5 array_splice($a1,$n1,2);
6 print_r($a1);
7 ?>

顯示:

Array ( [0] => Dog [1] => Cat [2] => Horse [3] => Bird [4] => 5 [5] => 6 [6] => 7 [7] => 8 ) 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM