PHP7实践指南:O2O网站与App后台开发
上QQ阅读APP看书,第一时间看更新

6.1 使用数组

编程时经常需要对一组数据进行处理,这样就会用到数组。数组是把一系列数据组织起来,形成一个可操作的整体,数组的实体由键和值组成,键值是成对出现的,是一一对应的关系。一维数组只能保存一列数据内容,从表现形式来看,就是这个数组的所有值只能是标量数据类型和除数组之外的复合数据类型。而当数组的元素有一个或多个一维数组时,便是二维数组,以此类推。数组的指针是数组内部指向数组元素的标记。

6.1.1 数组类型

PHP中有两种类型的数组,即索引数组和关联数组。索引数组的键由数字组成,在没有特别指定时,数组默认为索引数组。关联数组的键由字符串和数字混合组成。示例如下:

(1)关联数组:

        $array = array('a' => 'foo', 'b'=>'bar')

(2)索引数组:

        $array = array(1=>'foo', 2=>'bar')

示例中关联数组的键有两个,分别是a和b,索引数组的键是数字1和2。在数组中,如果未指定键,PHP就将自动使用之前用过的最大的数字键加1作为新的键。示例如下:

        <? php
        $array1=array("foo", "bar", "hallo", "world");
        var_dump($array1);
        echo "<br/>";
        $array2=array(
                "a",
                "b",
            6=>"c",
                "d",
        );
        var_dump($array2);
        ?>

执行以上代码的结果为:

          array(4) { [0]=> string(3) "foo" [1]=> string(3) "bar" [2]=> string(5) "hallo"[3]=> string(5) "world" }
          array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [6]=> string(1) "c" [7]=>string(1) "d" }

在第一个数组中没有指定键名,所以默认数组为索引数组,第二个数组中最后一个值“d”被自动赋予键名7,这是因为之前的最大整数键名是6。

6.1.2 创建数组

如6.1.1小节所示,可以使用array()创建数组,除此之外还可以使用方括号 [] 创建数组,示例如下所示:

        <? php
        $arr['a'] = 'red';
        $arr['b'] = 'orange';
        $arr['c'] = 'blue';
        $arr['d'] = 'green';
        var_dump($arr);
        echo "<br/>";
        $array = ['dog', 'cat', 'wolf', 'dragon'];
        var_dump($array);
        echo "<br/>";
        $bar[] = 'a';
        $bar[] = 'b';
        $bar[] = 'c';
        var_dump($bar);



        ?>

执行结果如下:

          array(4) { ["a"]=> string(3) "red" ["b"]=> string(6) "orange" ["c"]=> string(4)"blue" ["d"]=> string(5) "green" }
          array(4) { [0]=> string(3) "dog" [1]=> string(3) "cat" [2]=> string(4) "wolf"[3]=> string(6) "dragon" }
          array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" }

还可以使用range()来建立一个包含指定范围单元的数组。语法如下:

        array range ( mixed $start , mixed $limit [, number $step = 1 ] )

start是序列的第一个值,序列结束于limit的值。如果给出了step的值,它将被作为单元之间的步进值。step应该为正值,如果未指定,step默认为1。该函数将会在start和limit之间的数组创建一个元素值。

使用示例如下:

        <? php
        $a = range(0, 5);
        $b = range(0,5,2);
        $c = range(a, g);

        $d=range(a, g,2);
        echo "<pre>";
        print_r($a);
        print_r($b);
        print_r($c);
        print_r($d);
        ?>

执行以上程序的结果如下:

          Array
          (
              [0] => 0
              [1] => 1
              [2] => 2
              [3] => 3
              [4] => 4
              [5] => 5
          )
          Array
          (
              [0] => 0
              [1] => 2
              [2] => 4
          )
          Array
          (
              [0] => a
              [1] => b
              [2] => c
              [3] => d
              [4] => e
              [5] => f
              [6] => g
          )
          Array
          (
              [0] => a
              [1] => c
              [2] => e
              [3] => g
          )