一、php陣列的宣告

     1、陣列中可以有任意型別的資料
     2、長度可以變長
     3、陣列的分類:
          a、索引陣列:陣列是以從0開始的幀數作為索引值
               宣告:$arr = array(1,2);$arr[0] = 1;
               計算陣列長度:count($arr);
          b、關聯陣列:陣列是以字串作為索引值
               宣告:$arr["name"] = "gh";
                     $arr = array("name"=>"zs","age"=>2);
 
          索引陣列和關聯陣列的整合使用:
          $arr = array("name"=>"zs",2,"age"=>3,4);
          如果要去到name就是$arr["name"],如果想取到2,就是$arr[0],如果想取到4,就是arr[1],關聯陣列的下標不會影響到索引陣列的排序
 
          多維陣列:
               $arr1 = array(1,2,3,4);
               $arr2 = array("abc","def");
 
               $arr = array($arr1,$arr2);
                    
     
二、php陣列的遍歷
     1、for迴圈:for($i=0;$<count($arr);$i++){}儘量不要用,因為索引陣列和關聯陣列可能混合使用
     2、foreach($arr as $value){}或者foreach($arr as $key=>$value){}其中$key代表陣列的下標,$value代表陣列的值
 
     遍歷二維陣列:
     $arr = array(array(1,2,3),array("a","b"));

foreach($arr as $key=>$value){
        foreach($value as $k=>$v){
            echo "\$arr[".$key."][".$k."] =".$v."&nbsp;&nbsp;";
        }
        echo "<br/>遍歷一次換行<br/>";
    }

 
     3、while()
          $arr = array("hello"=>1,2,3);
          each()方法:此方法返回一個數組,形如Array ( [1] => 1 [value] => 1 [0] => hello [key] => hello ),0和key代表陣列的下表,1和value代表下表對應的值,每次執行後向前執行一步,直至陣列中不在有資料了
          print_r(each($arr));
 
          while($a = each($arr)){
               echo $a["key"]."====>".$a["value"]
          }
 
     4、list()將陣列中的值轉換成變數,只能識別到索引陣列
     $arr = array(1,2,3);  
     list($a,$b,$c)=$arr;
     echo $a."-----".$b."-----".$c;
 
     while(list($key,$value)=each($arr)){}

三、php陣列的相關處理函式
     
     current(array arr) :返回當前指標對應的內容的值 
     key(array arr):返回當前指標對應的索引的值
     這兩個函式都不能使指標進行移動
     $arr = array("hello"=>"one","two","three",1,2,3);
     $a = current($arr);返回的是當前指標對應的值,輸出one
 
     $b = key($arr);返回當前指標位置對應的索引的值,輸出hello
 
     next(array arr):使陣列的指標向下移動一個
     end(array arr):使陣列的指標移動到最後
     prev(array arr):使陣列的指標向上移動一個
     reset(array arr):使陣列的指標重新移動到最開始的位置
 
     count(array arr):計算陣列的長度
     sizeof(array arr):計算陣列長度
 
     array_change_key_case(array arr,形態常數):常熟形態:CASE_UPPER,CASE_LOWER
     $arr = array("heLLo"=>"one","WWW"=>"two","baidu"=>"three");
     $newarr = array_change_key_case($arr,CASE_UPPER);
     print_r($newarr);
     
     輸出的結果為:Array ( [HELLO] => one [WWW] => two [BAIDU] => three )
 
     array_chunk(目標陣列,分解的索引個數[,boolean]):把一個數組分解成還有多個小資料的陣列,最後一個boolean,如果為true則表示保留之前陣列的索引名字,否則全都是索引陣列的形式,此值預設為false
 
     例子:$arr = array("hello"=>"one","two","three",1,2,3,"www");
     $newarr = array_chunk($arr,3,true);
     輸出結果為:Array ( [0] => Array ( [hello] => one [0] => two [1] => three ) [1] => Array ( [2] => 1 [3] => 2 [4] => 3 ) [2] => Array ( [5] => www ) )
 
     最後一個引數是false時:
     Array ( [0] => Array ( [0] => one [1] => two [2] => three ) [1] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [2] => Array ( [0] => www ) )
     可以看到第二中方式中的所有索引都是數字
 
     array_count_values(陣列名稱):用於計算陣列中某個值出現的次數,返回的值仍然是個陣列,原陣列中的值作為陣列的現在陣列的下標,次數作為陣列的長度
     如:
$arr = array("hello"=>"one","two","three",1,2,3,"one","two",1,2,3"www");
     $newarr = array_count_values($arr);
     print_r($newarr);
     輸出的結果為:
     Array ( [one] => 2 [two] => 2 [three] => 1 [1] => 2 [2] => 2 [3] => 2 [www] => 1 )
 
     array_fill(起始索引位置,區段大小,指定字元):用自定義數值填滿陣列中指定索引的區段
 
     array_filter(目標陣列,定義的函式):過濾函式
     例子:
     $arr = array("hello"=>"one","two","three",1,2,3,-5,-7,"www"); 
     function func1($value){
          if($value > 0){
               return true;
          }else return false;
     }
     $newarr = array_filter($arr,func1);//表示將arr陣列中的每一個值作為引數傳入到func1中去進行比較,如果返回true,則保留到newarr陣列中去,否則捨棄(這個地方,所有字串都被識別為0)。
 
     array_walk(array arr,function func1[,userdata]):對陣列中的每個元素應用回撥函式。如果成功則返回 TRUE,否則返回 FALSE。
     function func1($value,$key){
          echo "$key --> $value <br/>";
     }
     $arr = array("a"=>"cat","b"=>"dog");
     array_walk($arr,func1);
     輸出的結果為:$a --> cat
                    $b --> dog
     還有稍微複雜點的例子,可以參考這裡:http://www.w3school.com.cn/php/func_array_walk.asp
 
     array_map(回撥函式,array arr):將回調函式作用到給定陣列的單元上
 
     例子:function func1($value){
               return $value*$value;
          }
          $newarr = array_map(func1,$arr);
          此時$newarr是一個數組,其中存放著$arr中的每個值得平方值
     
     array_flip(目標陣列):交換陣列中的鍵和值,如果同一個值出現了多次,則最後一個鍵名將作為它的值,所有其它的都丟失了。
     
     array_sum(目標陣列):將陣列中的所有值的和以整數或浮點數的結果返回。
     
     array_unique():去除陣列中重複的值
     
     array_values():返回陣列中所有的值,忽略原有的鍵名,重新使用索引陣列
     
     array_keys(array arr):返回陣列中的所有鍵
 
     in_array(要檢索的元素,array arr[,boolean是否按資料型別進行檢索]):查詢某個值是否在陣列中
 
     array_search(要查詢的元素,array $arr):返回對應元素對應的鍵名,不存在返回false
 
     array_key_exists(下標值,array $arr):判斷下標是否存在,返回boolean
 
     extract(array $arr):將陣列轉換成變數,只針對關聯陣列
 
     compact():將變數轉換成陣列,生成的陣列是關聯陣列,而且陣列的鍵值和內容相同