四、數組(二)

來源:互聯網
上載者:User

 

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

                        ?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.