zoukankan      html  css  js  c++  java
  • 改变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 ) 
  • 相关阅读:
    asp.net core mvc 之 DynamicApi
    打造适用于c#的feign
    asp.net App_Code文件夹相关操作
    基于Mono.Cecil的静态注入
    补充ICache
    自制简单实用IoC
    自制简单的.Net ORM框架 (一) 简介
    解决Asp.net Mvc中使用异步的时候HttpContext.Current为null的方法
    微信开发之.Net
    VS2017 网站打包发布生成的文件中包含.pdb文件,解决办法
  • 原文地址:https://www.cnblogs.com/4php/p/2720208.html
Copyright © 2011-2022 走看看