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

php數組的使用方法詳解

編輯:關於PHP編程

一、什麼是數組
數組就是一組數據的集合,把一系列數據組織起來,形成一個可操作的整體。數組的每個實體都包含兩項:鍵和值。
二、聲明數據
在PHP中聲明數組的方式主要有兩種:
一是應用array()函數聲明數組,
一是直接為數組元素賦值。飛飛Asp!技術樂園
<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為普通的整形、字符型或實型變量則輸出該變量本身,如果該參數為數組,則按一定鍵值和元素的順序顯示出該數組中的所有元素。
五、數組的構造
一維數組:
當一個數組的元素是變量時,則稱其為一維數組。飛飛As.p技術樂園
聲明一位數組: 類型說明符 數組名[常量表達式];
二維數組:
當一個數組的元素是一個一位數組時,則稱之為二維數組。
如,

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

六、遍歷數組
遍歷數組中的所有元素是常用的一種操作,在遍歷的過程中可以完成查詢或其他功能。在PHP中遍歷數組的方法有多種,下面介紹最常用的兩種方法。
<1>使用foreach結構遍歷數組;
<2>使用list()函數遍歷數組,list()函數僅能用於數字索引的數組,且數字索引從0開始。
例:綜合使用list()和each()認證用戶登錄:

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

七、統計數組元素個數
在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]." ";
}
?>

運行結果:
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 )


array("key"=>"value");建立數組

  //顯示數組

  print_r($array);

  //使用compact()函數新建數組,並把參數做為新數組的單元;

  $newArray = compact("red","green","yellow","blue","array");

  //使用extract()函數把數組中的單元轉換為變量

  extract($exArray);

  echo "$key1 $key2 $key3 $key4 $key5";

  ※檢查值、鍵

  array_key_exists($key,$array);//檢查數組鍵

  in_array($value,$array);//檢查值於數組

  ※獲取值

  //使用array_values()取得數組的值

  $carValues = array_values($car);

  //取出數組的鍵名

  $twoKeys = array_keys($two);

  key($array);//輸出當前單元的鍵名

  //數組定義後,使用current()取得當前單元的值

  $red = current($array);

  list($red,$green) = $array;//把數組中的值賦與變量,$array = array("紅色","綠色");

  each($two);//返回數組中當前單元的鍵和值

  ※遍歷數組

  foreach($two as $subArray);//遍歷數組

  while(list($key,$value) = each($array)){

  echo "$key=>$value,";//使用each遍歷數組

  }

  ※填充數組

  //向左、右填充數組

  array_pad($array,+3,"shuzhi");//2參數為正從左往右填充,數值大於單元數時才填充

  $array1 = array_fill(5,5,"test");//使用array_fill()填充這個數組的值,值為test,從第5個單元開始填充,一共填充5個單元

  //填充數組鍵名

  $keys = array('string', 5, 10, 'str');

  $array3 = array_fill_keys($keys,"數組值");

  //使用array_filp()函數交換鍵名與值

  $speed = array_flip($speed);

  //使用array_splice()函數替換第6個單元的值為7

  $output = array_splice($input,6,0,7);

  //使用array_splice()函數刪除數組單元,只保留前5個單元

  $output = array_splice($input,5);

  $array1 = range(10,100,10); //使用range()函數的第三個參數,設置單元之間的步進值

  ※排序

  shuffle($array);//將數組順序打亂

  //使用array_multisort()對三個數組排序

  array_multisort($sort1,$sort2,$sort3);

  //把這個數組進行排序,並保持索引關系

  asort($array);

  //把測試數組進行逆向排序,並保持索引關系

  arsort($array);

  //使用ksort()對數組按鍵名排序

  ksort($array);

  //使用krsort()函數按鍵名逆向排序

  krsort($array);

  //使用sort()對測試數組進行排序[以鍵名排列]

  sort($array);

  //使用natsort()排序[自然排序,以數值排列]對單元數值大小寫敏感

  natsort($array);

  //使用natcasesort()函數排序[自然排序]但是忽略數值大小寫

  natcasesort($array);

  //使用array_reverse()函數排序,數組單元按相反排列

  $newArray = array_reverse($array,TRUE);//TRUE設時保留原鍵名

  ※交集、差集

  //使用array_diff()計算三個數組的差集[對數組數值比較]

  $result = array_diff($dog1,$dog2,$dog3);

  //使用array_diff_assoc()計算三個數組的差集[對數值和鍵名比較]

  $result = array_diff_assoc($dog1,$dog2,$dog3);

  //使用array_diff_key()計算三個數組的差集[比較鍵名]

  $result = array_diff_key($dog1,$dog2,$dog3);

  //使用array_intersect()計算三個數組的交集[對數組數值比較]

  $result = array_intersect($dog1,$dog2,$dog3);

  //使用array_intersect_assoc()計算三個數組的交集[對數值和鍵名比較]

  $result = array_intersect_assoc($dog1,$dog2,$dog3);

  //使用array_intersect_key()計算三個數組的交集[比較鍵名]

  $result = array_intersect_key($dog1,$dog2,$dog3);

  ※合並數組

  //使用array_merge()函數合並數組

  $result = array_merge($array1,$array2,$array3,$array4,$array5);

  array_rand($input,10);//隨機取出10個單元

  count($array,COUNT_RECURSIVE);//顯示數組單元數目,2參數只可為1或者COUNT_RECURSIVE,有時可遍歷多維數組

  ※出入棧

  //數組出棧,後進先出,數組最後一個單元彈出

  array_pop($array);

  //數組入棧,將7,8兩個數值添加到數組尾部

  array_push($array,7,8);

  //將數組開頭單元移出數組

  array_shift($array);

  //將7,8添加入數組開頭

  array_unshift($array,7,8);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved