现在的位置: 首页 > 综合 > 正文

数组(一)

2013年08月11日 ⁄ 综合 ⁄ 共 6045字 ⁄ 字号 评论关闭

 

四、 数组

1。索引数组和关联数组:      (1)在PHP中有两种数组:数字索引数组和关联数组,php内部将所有的数组

                                                   都存储为关联数组。

                                              (2)PHP数组元素有一个不依赖于键和值的内部顺序,这个顺序一般就是把值插

                                                   入到数组中的顺序.

2。访问数组元素$array[index]:   
                                     

http://hi.baidu.com/kkwtre/blog/item/81fff1992ea7a30c6f068ce3.html

                                            (1) index可以是数字或是字符串,如果完全是整数的字符串被当作整数处理,比如:$array["1"] 等价于 $array[1].但$array["001"]不等价于$array[1];

                                             (2) 不需要将每个索引字符串都加上引号,$array[index]与$array['index']是一样的,但是建议加上引号,这是良好的编写习惯

                                             (3) 键可以是一个变量,如果键是一个包括字符和变量的混合字符串,则需要加双引号

                                             (4) 如果在字符串中要通过变量替换得到某个数组元素,则键名不使用引号,或将整个数组元素变量外加一个大括号

3。初试化数组:             (1)可以如下初始化一个数组

                                              $array[0] = 1;

                                             $array['hello'] = 2;

                                              .........

                                      (2)也可以用array()语言结构

                                          $array = array( "hello" => 2,0 => 1);

4.在数组末尾添加一个值:     $array[] = 'hello',就会在数组array末尾添加一个数组元素:'hello',注意该数

                                           组元素的键值是数字。

5.连续整数或字符的数组:      $numbers = range(1,10)       // array(1,2,3,4....10)

                                            $letters = range('a','z')    // array('a','b'......'z')

6.获得数组大小:             count(),sizeof()两者是一样的

7.填充数组:              array_pad(original_array,pad_size,pad_value)

                                 (1)第二个参数是你想要数组拥有的最少的元素个数。第三个是要填充值,该函数返回

                                      一个填充得到的新数组。

                                 (2)该函数默认是填充到数组末尾的,但是可以将pad_size设置为的,将填充到数组

                                       开头

8。多维数组:          数组中的值也可以是数组,这就构成了多维数组,可以用$array[index1][index2]

                                [index3]。。。多重下标访问多维数组元素

9。用list析取多个值:        

http://hi.baidu.com/kkwtre/blog/item/c47467dd405d92dd8c102916.html

                        
                      $e = array(0=>'100',   1=>'200', 2=>'300',    'b'=>'400');

                         list($a,$b,$c,$d) = $e;    

          //$a='100', $b='200',$c='200'.$d = NULL,因为list仅能用于析取数字索引的数组元素

       
                   注意三点:

          (1).list仅能用于析取数字索引的数组元素

          (2).list假定数字索引从0开始

          (3).list中可以用逗号跳过多个值

10.子索引数组的截取:         array_slice(array,offset,length),

                                          一般只用于数字索引数组,用于关联数组没有意义

                              

11.数组分块成多个小数组:

$chunks = array_chunk(array, size [, bool preserve_keys])

preserve_keys默认值是 FALSE。

12.获得数组中键/值组成的数组:    array_keys(array), array_values(array);

13.是否存在键:                    array_key_exists(key,array) 返回 true | false

14.是否存在值:              in_array(to_find,array [,bool strict])

                             (1)返回 true | false. 默认只检查值不检查类型,如果strict为true则类型也会被检查

                             (2)array_search(to_find,array [,bool strict])是in_array变种,唯一区别是在数组中搜索给

                                  定的值,如果成功则返回相应的键名

15.数组的插入删除:            array_splice(array,offset [, length [, array replacement]])

                                                 (1) 该函数把array数组中由 offset 和 length 指定的单元去掉,如果提供了 replacement 参数,则用 replacement 数组中的单元取代返回一个包含有被移除单元的数组。

(2) 该函数操作以后 array会发生变化,(也就是参数是以引用的方式传进去的)。

(3) 该函数主要用于对数字索引数组的处理,对关联数组会将replacement的键值去除,例如:

                                    <?php

                                        function print_array($array){

                                                foreach($array as $key=>$value){

                                                    echo "$key => $value; ";

                                                }

                                                echo "\n";

                                        }

                                    $replacement = array('x' => 'xx','y'=> 'yy');

                                   $input = array ("a" => 'aa', "b" => 'bb', 'c' => "cc", 'd' => "dd", 'e' => 'ee', 'f'=>'ff','g'=>'gg');

                                   print_array(array_splice ($input, 2,2,$replacement));   //c => cc; d => dd;  

                                    print_array($input);    //a => aa; b => bb; 0 => xx; 1 => yy; e => ee; f => ff; g => gg;                      

                                   ?>

                           

16.数组和变量间转换:         
   

extract( array ),和 compact(variable_string1,variable_string2,variable_string3......)

                    (1) 变量的名字对应数组的键名,而变量的值则成为数组中的键值。

(2) extract(array,extract_type,prefix),它检查每个键名看是否可以作为一个合法的变量名,同时也检查和符号表中已有的变量名的 名字是否冲突。对待非法/数字和冲突的键名的方法将根据 extract_type 参数(即第二个参数)决定。最常用的extract_type是EXTR_PREFIX_ALL给所有变量名加上前缀 prefix。

                <?php

                        $var_array = array ("color" => "blue",

                                        "size" => "medium",

                                        "shape" => "sphere");

                       extract ($var_array, EXTR_PREFIX_ALL, "haha");

                       print "$haha_color, $haha_size, $haha_shape\n"; //blue, medium, sphere

                      
                      //注意传入的是变量的名字,而不是带有'$'前缀的变量本身

                       $array = compact('haha_color', 'haha_size', 'haha_shape');

                       var_dump($array); // haha_color => blue, haha_size => medium, haha_shape => sphere

                    ?>

17.遍历数组:http://hi.baidu.com/kkwtre/blog/item/0a0bbe0308f44ee809fa9338.html       <php程序设计>P128

                                (1) PHP数组元素有一个不依赖于键和值的内部顺序,这个顺序一般就是把值插入到数组中的顺序。

(2) foreach()结构和each()等迭代器函数是按照这个内部顺序进行遍历的,而for循环由于只作用于数字索引的数组,是按照数字索引进行遍历的,与内部顺序没有关系。

                                                    

18.为数组的每个元素调用函数:   
  

array_walk(array,function_name [,function_parameter])

                             (1) 典型情况下callback function 接受两个参数。array 参数的值作为第一个,键名作为第二个。如果提供了可选参数     function_parameter,将被作为第三个参数传递给 callback function。

                               (2) 用户不应在回调函数中增加/删除单元,unset 单元等改变该数组本身。如果 array_walk() 作用的数组改变了,则此函数的行为未    经定义,且不可预期。

            <?php

               $fruits = array ("d"=>"lemon", "a"=>"orange", "b"=>"banana", "c"=>"apple");

                function test_alter (&$item1, $key, $prefix) {

                    $item1 = "$prefix:". "$item1";

                }

                array_walk ($fruits, 'test_alter', 'fruit'); //d: fruit:lemon; a: fruit:orange; b: fruit:banana; c: fruit:apple;

            ?>

抱歉!评论已关闭.