關于PHP編程中“數組”的基礎知識_PHP教程

      編輯Tag賺U幣
      教程Tag:暫無Tag,歡迎添加,賺取U幣!

      推薦:PHP在網站開發中的一些優勢
      在多數WEB開發者眼中,ASP和JSP都被認為是領跑者,而PHP卻被認為是個弱小的“掙扎者”,或者說它是一門被貶低為業余者才使用的語言,不值得參與企業WEB開發的競爭。在我看來,PH

      關于數組:

      PHP中的數組是復雜的,并且比許多其他高級語言中的數組更靈活。數組array是一組有序的變量,其中每個變量被叫做一個元素。數組可以被編號或者相關聯,也就是數組的元素可以分別根據數字索引或文本化字符串來訪問

      PHP中,數組可以包含標量(整數,布爾,字符串,浮點數)或復合值(對象甚至其他數組),并且可以包含不同類型的值

      1。創建數組

      PHP提供創建數組的array()語言結構

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

      $words = array("web","database","application");

      echo $numbers[2];

      echo $words[0];

      ---------------------輸出結果----------------------------------------

      3web

      ---------------------------------------------------------------------

      默認情況下,數組的第一個元素的索引為0。數組中包含的值可以通過使用方括號[]語法來檢索和修改

      $numbers[5] = 0;

      數字化索引的數組可以創建位從任何索引值開始

      $numbers = array(1=>"one","two","three","four");

      也可以松散的索引

      $numbers = array(1=>"one",3=>"three",5=>"zero");

      可以通過給變量賦予一個沒有參數的array()來創建空數組。然后可以通過使用方括號[]語法來添加值

      $error = array();

      $error[] = "no error!!!";

      $error[] = "second error!!!";

      echo $error[0];

      echo $error[1];

      ---------------------輸出結果----------------------------------------

      no error!!!second error!!!

      ---------------------------------------------------------------------

      2.關聯數組

      關聯數組(associative array)使用字符串索引(或鍵)來訪問存儲在數組中的值

      關聯索引的數組對于數據庫層交互非常有用

      $newarray = array("first"=>1,"second"=>2,"third"=>3);

      echo $newarray["second"];

      $newarray["third"]=5;

      echo $newarray["third"];

      ---------------------輸出結果----------------------------------------

      25

      ---------------------------------------------------------------------

      3.異構數組

      PHP數組可以包含不同種類的值

      $mixedBag = array("cat",42,8.5,false);

      var_dump(mixedBag);

      4.多維數組

      創建包含數組的數組,數組維數沒有限制,但是一般很難想象一個多于三維的數組的用法

      $planets = array(array("MM",1,2),array("NN",3,4),array("BB",5,6),array("VV",7,8));

      print $planets[2][0];

      $planets2 = array("MM"=>array("AA"=>1,"SS"=>2),

      "NN"=>array("DD"=>3,"FF"=>4),

      "BB"=>array("GG"=>6,"HH"=>7,"PP"=>array("haha!!!!")),

      "VV"=>array("JJ"=>6,"KK"=>7,"LL"=>array("one","two")));

      print $planets2["VV"]["LL"][0];

      ---------------------輸出結果----------------------------------------

      BBone

      ---------------------------------------------------------------------

      5.使用循環訪問數組

      遍歷數組的方法有很多(使用while,for循環)或者foreach語句,最容易的是foreach 語句

      $length = array(0,107,202,400,475);

      //將厘米轉換為寸

      for($i=0;$i<5;$i )

      {

      echo ($length[$i]/3);

      }

      $j=0;

      while(isset($length[$j]))

      {

      echo ($length[$j]/3);

      $j ;

      }

      foreach($length as $cm)

      {

      echo ($cm/3);

      }

      ---------------------輸出結果----------------------------------------

      0

      35.6666666667

      67.3333333333

      133.333333333

      158.333333333

      0

      35.6666666667

      67.3333333333

      133.333333333

      158.333333333

      0

      35.6666666667

      67.3333333333

      133.333333333

      158.333333333

      ---------------------------------------------------------------------

      foreach還可以迭代關聯數組的值

      $sound = array("cow"=>"moo","dog"=>"woof",

      "pig"=>"oink","duck"=>"quack");

      foreach ($sound as $animal=>$noice)

      {

      echo "$animal 得叫聲是這樣的 $noice $noice......";

      }

      ---------------------輸出結果----------------------------------------

      cow 的叫聲是這樣的 moo moo......

      dog 的叫聲是這樣的 woof woof......

      pig 的叫聲是這樣的 oink oink......

      duck 的叫聲是這樣的 quack quack......

      ---------------------------------------------------------------------

      6.使用數組指針

      與存儲在數組中的鍵和關聯值一起,PHP還擁有一個指向數組當前元素的內部索引,

      有幾個函數使用并更新該數組索引來提供對數組元素的訪問

      $a = array("a","b","c","d","e","f");

      echo current($a);

      each($a);

      key($a);//目前數組的指針,返回其索引

      echo current($a);//當前元素的值

      each($a);//返回當前元素的值并將內部索引指向下一個元素

      each($a);

      echo current($a);

      next($a);//指向下一個元素

      echo current($a);

      prev($a);//指向上一個元素

      echo current($a);

      end($a);//指向最后一個元素

      echo current($a);

      key($a);

      echo current($a);

      ---------------------輸出結果----------------------------------------

      abdedff

      ---------------------------------------------------------------------

      7.基本的數組函數

      integer count(mixed var)//在數組中返回元素的個數,也可用于任何的變量

      number max(array numbers)//返回數組中的最大值

      number min(array numbers)//返回數組中的最小值

      boolean in_array(mixed needle,array haystack[,bollean strict])//查找數組中的值,第三個參數可選,強制執行類型檢查

      mixed array_search(mixed needle,array haystack[,boolean strict])//返回 鍵 而不是布爾值,

      找不到時返回false,找到的元素如果正好是第一個元素,則返回0,而PHP會自動轉化為false所以需要使用===判斷,如下

      $a = array("a","b","c","d","e","f");

      $index = array_search("a",$a);

      if($index === false)

      echo "在數組a中未發現字符'a'";

      else

      echo "Index = $index";

      ---------------------輸出結果----------------------------------------

      Index = 0

      ---------------------------------------------------------------------

      array array_reverse(array source[,bool preserve_keys])//逆轉數組,生成一個新數組,可選參數為true時,保留索引和元素之間的關聯

      $a = array("a","b","c","d","e","f");

      $newa = array_reverse($a);//直接翻轉

      echo $newa[0];

      $newb = array_reverse($a,true);//依舊保留了索引和元素之間的關聯

      echo $newb[0];

      ---------------------輸出結果----------------------------------------

      fa

      ---------------------------------------------------------------------

      sort(array subject[,integer sort_flag])//根據 值 進行升序排列(在原數組中重新排列元素)

      rsort(array subject[,integer sort_flag])//根據 值 進行降序排列(在原數組中重新排列元素)

      可選參數可以指定為按數字方式SORT_NUMERIC還是字符串方式SORT_STRING或者通常的方式SORT_REGULAR排序

      sort()、rsort()可以用于關聯數組,但是 鍵 將丟失

      asort(array subject[,integer sort_flag])//根據 值 進行升序排列(在原數組中重新排列元素),保持鍵值關聯

      arsort(array subject[,integer sort_flag])//根據 值 進行降序排列(在原數組中重新排列元素),保持鍵值關聯

      當asort() arsort()用于非關聯數組時,元素按排序后的次序重新排列,但是訪問元素的索引不改變

      integer ksort(ayyay subject [,integer sort_flag])//根據 鍵或索引 進行升序排列

      integer krsort(ayyay subject [,integer sort_flag])//根據 鍵或索引 進行降序排列

      usort(array subject, string compare_function)//根據用戶定義排序,用戶定義自己的排序規則函數,但函數必須符合

      uasort(array subject, string compare_function)//integer my_compare_function(mixed a, mixed b),a>b返回1,a uksort(array subject, string compare_function)//a等于b時返回0

      $numbers = array(16,3,2,171,5,24,6,19);

      sort($numbers);

      foreach($numbers as $n)

      echo $n." ";

      $numbers = array(16,3,2,171,5,24,6,19);

      rsort($numbers);

      foreach($numbers as $n)

      echo $n." ";

      $numbers = array(16,3,2,171,5,24,6,19);

      sort($numbers,SORT_STRING);

      foreach($numbers as $n)

      echo $n." ";

      $a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");

      asort($a);

      foreach ($a as $keyname=>$keyvalue)

      echo $keyvalue;

      $a = array("o"=>"kk","e"=>"zz","z"=>"hh","a"=>"rr");

      ksort($a);

      foreach ($a as $keyname=>$keyvalue)

      echo $keyvalue;

      //基于長度比較兩個字符串

      function cmp_length($a,$b)

      {

      if(strlen($a) < strlen($b))

      return -1;

      if(strlen($a) > strlen($b))

      return 1;

      return 0;

      }

      $animals = array("cow","ox","monkey","mimi");

      usort($animals,"cmp_length");

      foreach($animals as $an)

      echo $an;

      ---------------------輸出結果----------------------------------------

      2 3 5 6 16 19 24 171 171 24 19 16 6 5 3 2 16 171 19 2 24 3 5 6 hhkkrrzzrrzzkkhhoxcowmimimonkey

      ---------------------------------------------------------------------

      array_merge($a,$b)//組合數組,個人認為是比較有趣的函數之一,從兩個數組生成一個數組,具有相同 鍵 的值會被覆蓋

      ////////////////////////////代碼部分////////////////////////////////////////

      $a = array("name"=>"zhangsan",10,100);

      $b = array("name"=>"lisi",4,6,8);

      $c = array_merge($a,$b);

      var_dump($c);

      //////////////////////////////////////////////////////////////////////////

      ---------------------輸出結果----------------------------------------

      array(6) { ["name"]=> string(4) "lisi" [0]=> int(10) [1]=> int(100) [2]=> int(4) [3]=> int(6) [4]=> int(8) }

      ---------------------------------------------------------------------

      array array_combine(array $a,array $b)//a數組的值為新數組的鍵,b數組的值為新數組的值,數組長度不同時,返回false

      ////////////////////////////代碼部分////////////////////////////////////////

      $a = array("name","math","china");

      $b = array("zhangsan",4,6);

      $c = array_combine($a,$b);

      var_dump($c);

      //////////////////////////////////////////////////////////////////////////

      ---------------------輸出結果----------------------------------------

      array(3) { ["name"]=> string(8) "zhangsan" ["math"]=> int(4) ["china"]=> int(6) }

      ---------------------------------------------------------------------

      分享:PHP代碼安全和SQL Injection防范
      在PHP編碼的時候,如果考慮到一些比較基本的安全問題,首先一點: 1. 初始化你的變量 為什么這么說呢?我們看下面的代碼: 以下為引用的內容: i

      來源:模板無憂//所屬分類:PHP教程/更新時間:2009-06-27
      相關PHP教程