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

四、数组(二)

2013年08月24日 ⁄ 综合 ⁄ 共 5709字 ⁄ 字号 评论关闭

 

19.数组归纳:                    

20.排序:                      

              排序改变了元素的内部顺序并可以重新分配数字索引来反映新顺序

           (1) sort,rsort,usort按照值排序数组(改变了内部顺序),然后从0开始重新分配索引.可以用foreach检

                测排序后的内部顺序。

           (2) asort,arsort,uasort按照值排序数组(改变了内部顺序),但是键值不变

           (3) ksort,krsort,uksort按照键值排序数组(改变了内部顺序),值不变

            <?php

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

             
                //内部顺序(可以用foreach输出): 0: apple; 1: banana; 2: lemon; 3: orange;

                      sort($array);                  

                 $array = array ('a' => "lemon", 'c' => "orange", 'b' => "banana", 'd' => "apple");             
               //内部顺序:d: apple; b: banana; a: lemon; c: orange;

asort ($array);        

                 //内部顺序:a: lemon; b: banana; c: orange; d: apple;

ksort ($array);              

            ?>

                       
          

21.数组翻转:         

$new_array = array_reverse( array [, bool preserve_keys])

                 (1) preserve_keys只对数字索引起作用,对字符串键不起作用,字符串键始终会被保留

                 (2) 函数翻转数组中元素的内部顺序,如果键值是数字,那么默认重新分配数字键值,如果键值

                     是字符串,则不变,即默认preserve_key =    false.

                (3)$new_array = array_flip(array),翻转了每个元素的键-值对的顺序

        <?php

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

        $array1 = array_reverse($array);    //d: apple; b: banana; c: orange; a: lemon;

        $array1 = array_reverse($array,true); //d: apple; b: banana; c: orange; a: lemon;

        
        $array = array ("lemon", "orange",'b'=> "banana","apple");

        $array2 = array_reverse($array);      //0: apple; b: banana; 1: orange; 2: lemon;

        $array1 = array_reverse($array,true); //2: apple; b: banana; 1: orange; 0: lemon;

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

        $array1 = array_flip($array);         //lemon: a; orange: c; banana: b; apple: d;

        $array = array ("lemon", "orange", "banana","apple");

        $array1 = array_flip($array);         //lemon: 0; orange: 1; banana: 2; apple: 3;

        ?>

22.洗牌:     shuffle(array):      使得array乱序,所有键值都被从0开始的数字键值取代

              <?php

                $array = array ('a' => "lemon", 'b' => "orange", "banana","apple");

               shuffle($array);         //0: banana; 1: orange; 2: lemon; 3: apple;    

                ?>

23.计算数组和:               

<?php

                                    $array = array('1','2','01',1,2,"1aa1");

                                    echo array_sum($array);                  //8

                           ?>

24.合并两个数组:     

          http://hi.baidu.com/kkwtre/blog/item/69327001c766480a7aec2c5e.html          
                    

          array_merge(array1,array2,array3...)

         如果输入的数组中有相同的字符串键名,则之前数组的值会被后面的值覆盖。然而,如果数组包含相

        同的数字键名,后面的 值将不会覆盖原来的值,而是附加到 后面。

        <?php

             $array1 = array ("color" => "red", 2, 4);

            $array2 = array ("a", "b", "color" => "green", "shape" => "trapezoid", 4);

             //color: green; 0: 2; 1: 4; 2: a; 3: b; shape: trapezoid; 4: 4;

           $result1 = array_merge ($array1, $array2);   

           $result2 = $array1 + $array2;         //color: red; 0: 2; 1: 4; shape: trapezoid; 2: 4;

                               

         ?>

25.数组的差集:                array_diff ( array array1, array array2 [, array ...])

                          (1) array_diff返回一个数组,该数组包括了所有在 array1中但是不在任何其它参数数组中的值。注意键名保留不变

                            <?php

                                $array1 = array ("a" => "green", "red", "blue", "red");

                                $array2 = array ("b" => "green", "yellow", "red");

                                $result = array_diff ($array1, $array2);    //1: blue;

                                ?>

                        (2) 本函数使用'==='进行比较

26.从数组中过滤元素:           array_filter ( array input [, callback function])

                                 (1) array_filter() 依次将 input 数组中的每个值传递到 callback 函数。如果 callback

                                     函数返回 TRUE,则 input 数组的当前值会被包含在返回的结果数组中。

                                 (2) 数组的键名保留不变。

                <?php

                            function pa($array){

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

                                            echo "$key => $value; ";

                                    }

                                    echo "\n";

                                }

                            function odd($var) {

                                    return ($var % 2 == 1);

                                }

                            $array1 = array ("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);

                            pa(array_filter($array1, "odd"));   //a => 1; c => 3; e => 5;

                    ?>

27.移除数组中重复的值:      $new_array = array_unique (array)

                            array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,忽

                          略所有后面的键名。

            <?php

                $input = array ("b" => "green", "red", "a" => "green", "blue", "red",1,1,2,3);

                $result = array_unique ($input); //b => green; 0 => red; 1 => blue; 3 => 1; 5 => 2; 6 => 3;

                $input = array (4,"4","3",4,3,"3");

                $result = array_unique ($input);

                var_dump($result);                 //[0]=>int(4), [2]=>string(1) "3"

            ?>

28.计算数组的交集:            

array_intersect( array1, array2 [, array3 ...])

               该函数返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的

               注意键名取第一个

        <?php

            $array1 = array ("a" => "green", "red", "blue",'red');

            $array2 = array ("b" => "green", "yellow", "red");

            $result = array_intersect ($array1, $array2);//a => green; 0 => red; 2 => red;

        ?>

                   

array_reduce(array,function_name [, default]);

                     将函数function作用于数组的每一个元素来得到单个值

                       <?php

                            function rsum($v, $w) {

                                  $v += $w;

                                   return $v;

                            }

                         $a = array(1, 2, 3, 4, 5,6);

                         $b = array_reduce($a, "rsum",100);

                         echo $b;              // 100 + 1 +2 + 3 + 4 + 5 +6 = 121

                        ?>

抱歉!评论已关闭.