程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> PHP綜合 >> php數組

php數組

編輯:PHP綜合

一、什麼是數組
數組就是一組數據的集合,把一系列數據組織起來,形成一個可操作的整體。數組的每個實體都包含兩項:鍵和值。

二、聲明數據
在PHP中聲明數組的方式主要有兩種:一是應用array()函數聲明數組,一是直接為數組元素賦值。
<1>array()函數聲明的數組的方式array([mixed...]) 參數mixed的語法為key=>value
如,

<?php
$array=array("1"=>"編","2"=>"程","3"=>"詞","4"=>"典");
print_r($array);
echo "<br>";
echo $array[1]; //注意:下標默認是從0開始      
echo $array[2];       
echo $array[3];       
echo $array[4];       
?>

 


<2>直接為數組元素賦值。如果在創建數組時不知所創建數組的大小,或在實際編寫程序時數組的大小可能發生變化,采用這種數組創建的方法較好。
如,

<?php
$array[1]="I";
$array[2]="love";
$array[3]="PHP";
print_r($array); //輸出所創建數組的結構
?>

 

三、數組的類型
PHP支持兩種數組:索引數組(indexed array)和聯合數組(associative array),前者使用數字作為鍵,後者使用字符串作為鍵。

四、輸出數組
在PHP中對數組元素輸出,可以通過echo和print語句來實現,但這只能對數組中某一元素進行輸出;要將數組結構輸出則要使用print_r()函 數,其語法:print_r(mixed expression),參數expression為普通的整形、字符型或實型變量則輸出該變量本身,如果該參數為數組,則按一定鍵值和元素的順序顯示出 該數組中的所有元素。

五、數組的構造
一維數組:
當一個數組的元素是變量時,則稱其為一維數組。
聲明一位數組: 類型說明符 數組名[常量表達式];
二維數組:
當一個數組的元素是一個一位數組時,則稱之為二維數組。
如,

<?php
$str = array (
     "網絡編程語言"=>array ("PHP","JSP","ASP"),
"體育項目"=>array ("m"=>"足球","n"=>"籃球"));
print_r ( $str) ;
?>

 

六、遍歷數組
遍歷數組中的所有元素是常用的一種操作,在遍歷的過程中可以完成查詢或其他功能。在PHP中遍歷數組的方法有多種,下面介紹最常用的兩種方法。
<1>使用foreach結構遍歷數組;

foreach可以說是php語言單獨為遍歷數組提供的一種方法(其他語言也可能有),這種遍歷方法是php遍歷數組的首選
  foreach遍歷時可以是這樣的foreach($array as $key=>$value)包含鍵值元素 也可以是foreach($array as $value)只包含值
<2>使用list()函數遍歷數組,

list()函數僅能用於數字索引的數組,且數字索引從0開始。list()函數是將數組中的值賦給變量
  標准語法:void list ( mixed varname, mixed ... )
  用list實現對數組的遍歷代碼
例:綜合使用list()和each()認證用戶登錄:

<?php
//輸出用戶登錄信息
while(list($name,$value)=each($_POST)){
if($name!="submit"){
   echo "$name=$value<br>";
}
}
?>

 注意:
  a list函數所接受的數組只能是索引數組,不能是關聯數組!如果是關聯數組,則會出現類似 Notice Undefined offset提示
  b 如果只是部分取出數組的值,只需 按照這樣的寫法即可,list(,,$chrome,)=$arrGoogle;這樣我們就可以去除chrome的信息,但是注意一定要保證list參數與數組的元素個數相同(所取值前面的個數)
  c list函數賦值按索引順序賦值

<3>for循環

for循環是幾乎所有語言都可以用的一種遍歷數組的方式,但是在php語言中for循環不是遍歷數組的首選

  /*
  Designed By Androidyue
  php中數組的遍歷講解*/
  //for 循環遍歷數組
  //聲明一個數組並且初始化
  $array=array('Google','Chrome','Android','Youtube','Gmail');
  //使用for循環遍歷各數組元素,count()用來計算數組的長度
  for($i=0;$i
  //打印數組的元素的值
  echo $array[$i],"
";
  }
  ?>

 4.each函數遍歷數組
  each函數返回輸入數組的鍵值對
  標准語法:array each(array input array)
  返回值:返回4個值0,1,key,value;其中0和key包含鍵名,而1和value包含相應的數據
 

//使用each函數遍歷數組
  $arrGoogle=array('google','Gmail','Chrome','Android');
  //第一次使用each取得當前鍵值對,並且將指針移到下一個位置
  $arrG=each($arrGoogle);
  //打印結果,並且換行以清晰顯示結果
  print_r($arrG);
  print '
';
  $arrGmail=each($arrGoogle);
  print_r($arrGmail);
  print '
';
  $arrChrome=each($arrGoogle);
  print_r($arrChrome);
  print '
';
  $arrAndroid=each($arrGoogle);
  print_r($arrAndroid);
  print '
';
  //當指針位於數組末尾再次執行函數each,如果是這樣再次執行結果返回false
  $empty=each($arrGoogle);
  //如果指針無法繼續後移返回false
  if($empty==false){
  print '指針以位於數組末尾,無法在向後移,故返回false';
  }
  ?>

 注意:該函數的參數和返回值(在執行該函數前指針不位於數組末尾時)都為數組,在執行函數前數組指針位於數組末尾時再次執行該函數返回值為false
  開始的位置是第一個元素,每(正常)執行一次該函數,指針向後移到下一個地址

5.key()遍歷數組
  each是用來返回數組的鍵名
  基本語法:mixed key ( array &array )

/Designed By Androidyue
  //使用key函數遍歷數組
  //初始化一個關聯數組
  $arrChina=array('a'=>'Hebei','b'=>'Anhui','c'=>'Beijing','d'=>'Guangdong','e'=>'Shanghai');
  //初始化一個索引數組 但是索引數組使用key返回的是空字符產
  $arrCN=array('Hebei','Anhui','Beijing','Guangdong','Shanghai');//key顯示的是數組的字符串下標,如果為索引數組則為空字符串
  //print_r($arrChina);
  while($key=key($arrChina)){//對於關聯數組使用key方法可以執行
  echo $key,'
';
  next($arrChina);
  }
  print_r($arrCN);//輸出一下索引數組
  while($keyName=key($arrCN)){//這裡調用key函數賦值後為false,while條件不成立,不進行{}之間的操作
  /*if(empty($keyName)){
  print '該鍵名為空
';
  }*/
  /*if($keyName=''){
  print '該鍵名為空
';
  }*/
  var_dump($keyName);
  }
  //驗證對索引數組使用key函數的返回值賦值給變量這個表達式的布爾值
  if(($KeyName=key($arrCN))==false){
  print 'False';
  }
 //對索引數組調用key函數對變量賦值  $keyName=key($arrCN);
  next($arrCN);//將數組指針向後移動一位
  next($arrCN);
  next($arrCN);
  next($arrCN);
  next($arrCN);
  $keyName=key($arrCN);
  var_dump($keyName);//輸出值和類型類型信息
  //echo $keyName;
  ?>

 注意:key函數的參數一般為關聯數組,如果為索引數組那麼就沒有什麼意義了
  key函數不會推進指針移動,這裡我們調用了next函數,next函數用來推進指針向後移動,下面就是next函數的介紹

6.使用對指針進行操作的函數遍歷數組

a reset函數 用於將指針設置回數組的初始位置,如果需要在一個腳本中多次查看和處理一個數組,就可以使用這個函數,另外這個函數還常用於排序的結束
  b.current() 函數
  返回當前當前數組指針位置的值,該函數不對指針進行移動操作,需要注意這個特點
  c end 將指針移到數組的最後位置,返回目標位置的值
  d next 將指針向後移動一次並返回目標位置的數組值,如果當前位置為數組的最後位置,返回false
  e prev 將指針向前移動一次,並返回目標位置的數組值,如果當前位置是數組起始位置,則返回false

其它:

  current($sttr);    //取得當前元素的value值

        key($sttr);    //取得當前元素的key值

 

        

 

        next($sttr);    //將數組裡面的指針指向下一個(向下移)

 

        prev($sttr);    //將數組裡面的指針指向上一個(向上移)

 

 

 

        end($sttr);    //將指針指向最後一位

 

        reset($sttr);    //將指針復位(指向第一個元素)

 

 

 

 

 //Designed By Androidyue
  //reset方法的使用 注意以下代碼調用了控制指針的函數,移動指針的操作會影響到each函數的結果
  //初始化一個數組,為了簡寫代碼,聲明一個簡單的數組
  $arrGoogle=array('google','Gmail');
  //調用each函數,並且輸出返回數組 換行
  echo(current($arrGoogle));//使用current函數,打印出當前的值
  echo (next($arrGoogle));//調用next函數,打印下一個的值
  $arrG=each($arrGoogle);
  print_r($arrG);
  print '
';
  $arrGmail=each($arrGoogle);
  print_r($arrGmail);
  print '
';
  $arrMore=each($arrGoogle);//當指針無法繼續移動時返回false
  //print_r($arrMore);
  //echo $arrMore;
  print '
';
  //但是如果想繼續輸出使用重復上面的過程,那麼使用reset函數將指針重置為開始位置,然後重復上面的的操作
  reset($arrGoogle);
  echo(end($arrGoogle));//調用end函數將指針移到數組最後一個位置,並返回值
  echo(prev($arrGoogle));//調用prev函數將指針向前移動,並返回值
  $arrG=each($arrGoogle);
  print_r($arrG);
  print '
';
  $arrGmail=each($arrGoogle);
  print_r($arrGmail);
  print '
';
  ?>

 

 


七、統計數組元素個數
在PHP中,使用count()函數對數組中的元素個數進行統計,語法為:int coun(mixed array[,int mode]),其中參數array為必要參數,mode為可選參數,若選中COUNT——RECURSIVE(或1),本函數將遞歸地對數組數組。如,

<?php
$array = array("php" => array("PHP函數參考大全","PHP程序開發范例寶典","PHP數據庫系統開發完全手冊"),
               "asp" => array("ASP經驗技巧寶典")
         ); //聲明一個二維數組       
echo count($array,COUNT_RECURSIVE);//遞歸統計數組元素的個數,運行結果為6
?>

 

八、數組排序
<1>使用sort()和rsort()分別對數組進行升序和降序,如,

<?php
$array=array(5,26,37,18,9,42,88,66);
$array1=sort($array);       
for($i=0;$i<count($array);$i++){  
   echo $array[$i]."  ";  
}
echo "<br>";
$array1=rsort($array);      
for($i=0;$i<count($array);$i++){     
echo $array[$i]." &nbsp";
}
?>

 


運行結果:
5 9 18 26 37 42 66 88
88 66 42 37 26 18 9 5  
<2>使用ksort()和asort()對關聯數組排序
如果使用了相關數組,在排序後還要保持關鍵字和值的排序一致,這是就需要使用ksort()和asort()函

數,如,

<?php
$array=array('php'=>1,'jsp'=>2,'asp'=>3);
ksort($array);
print_r($array);
echo "<br>";
asort($array);
print_r($array);
?>

 


運行結果:
Array ( [asp] => 3 [jsp] => 2 [php] => 1 )
Array ( [php] => 1 [jsp] => 2 [asp] => 3 )

常用數組函數 

    count($sttr);    //獲得數組元素的個數     in_array("aaaa",$sttr);    //判斷元素是否在數組裡面,返回boolear類型     array_reverse($sttr);    //反轉數組,返回數組     array_unique($sttr);    //對數組的元素去重,返回數組     unset($attr["two"]);    //刪除數組裡面的某個元素,不返回     array_values($attr);    //重新建立索引,返回數組     array_merge($attr);    //合並數組,返回數組     array_push($attr,10);    //函數追加數組元素     $attr[]     = 10;    //賦值追加數組元素
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved