數組(一)

來源:互聯網
上載者:User

 

四、 數組

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;

            ?>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.