改变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 ) 

 

posted on 2012-10-13 14:21  php1994  阅读(4119)  评论(0编辑  收藏  举报

导航