php數組操作學習筆記

來源:互聯網
上載者:User

什麼是數組?

數組是一個資料的集合,相當於一個容器,可以將資料按一定的規則存到這個容器中。相當於旅館,旅館內有很多房間,而房間按照一定的規則編號。

數組的構成:基本結構形式如下:

$數組名 (鍵)= 值 數組名:是一個數組區別於另一個數組的方式,就像每個旅館都有一個名字。
鍵(key):也成為指標、索引或者標識符。鍵代表某值在數組中存放的位置,相當於旅館的門牌號,可以用不同方式命名。通過查詢鍵可以找到相應的值。
值(value):值相當於房間記憶體放的東西。

賦值建立數組

在php中,建立數組有變數賦值和調用函數兩種方法,這裡先講前者。

使用變數賦值方法很簡單,直接給一個陣列變數賦值即可。

執行個體:

 代碼如下 複製代碼

<?php
 $lang[]="php";
 $lang[]="html";
 $lang[]="css";
 echo "$lang[0] <br>";
 echo "$lang[1] <br>";
 echo "$lang[2] <br>";
?>

三個指派陳述式產生的數組內容:

0=>php

1=>html

2=>css

建立數組

除了上面介紹的賦值建立數組,還有調用函數的方法建立數組。

php提供了array函數來穿件一個數組,基本結構形式如下:

array (item1,item2... ,itemn)

/* item表示數組中的元素值。array()函數建立數組時自動給元素值分配標識符,從0依次增加 */
執行個體:

 代碼如下 複製代碼

<?php
 $student=array("Tom","Jacky","Rose");
 echo $student[0] ."t";
 echo $student[1] ."t";
 echo $student[2];
?>

數組鍵名

1、鍵名分配

在用array()函數建立數組時,鍵名會自動分配到各個值。另外,我們也可以按自己的需要直接給元素分配鍵名。

基本結構形式:

array ( key => item )

執行個體1:

 代碼如下 複製代碼
 <?php
 $a=array(1 => "you",2 =>"are ", 5 =>"how ");
 echo $a[5];
 echo $a[2];
 echo $a[1];
?>

2、用字串作鍵名

不但可以用整數作為鍵名,也可以使用字串作為鍵名。使用字串作為鍵名的數組成為字串索引(string-indexed)數組。

執行個體2:

 代碼如下 複製代碼
<?php
 $a=array("php"=>"動態網頁","html"=>"靜態網頁","css"=>"網頁排版");
 echo $a["php"] ."<br>";
 echo $a["html"] ."<br>";
 echo $a["css"];
?>

3、鍵名的修改

執行個體3:

 代碼如下 複製代碼

<?php        
 $arr = array("a" => "新浪",   
   "b"=>"網易",    
   "c" => "騰訊", "雅虎"  
  );
  $arr[a] = "PHP中文社區";  
  $arr['e'] = "新浪";   
  $arr[] = "百度";    
 echo $arr['a'] ."<br>";   
 echo $arr['b'] ."<br>";   
 echo $arr['c'] ."<br>";   
 echo $arr['e'] ."<br>";   
 echo $arr[0] ."<br>";    
 echo $arr[1] ."<br>";    
?>

建立多維陣列

在php程式編寫時,一維數組有時不能滿足需求,這時就要用到多維陣列。多維陣列就是在一維數組的基礎上再增加一個或多個細下標,用法與一維數組大致相同,只是多維資料操作更為複雜,不過功能更強大。

以二維數組為例,就像大房子裡面套有小房子,表示方法為$a[0][0]。

執行個體:

 代碼如下 複製代碼

<?php
 $a[0][0]=1;
 $a[0][1]=2;
 $a[0][2]=3;
 $a[1][0]=4;
 $a[1][1]=5;
 $a[1][2]=6;
 for($i=0;$i<=1;$i++){
  for($j=0;$j<=2;$j++){
   echo "$a[$i][$j]=" .$a[$i][$j] ."<br>"; /* "$"表示輸出變數符號$ */
  }
 }
?>

輸出數組

輸出數組是指將數組的的所有元素資料顯示在瀏覽器上,php怎麼輸出數組?常用的php輸出數組函數有var_dump()和print_r()函數。

1、var_dump函數遞迴展開數組元素,顯示數組各元素的類型、鍵名和元素值。

執行個體1:

 代碼如下 複製代碼
<?php
 $a=array(0,5,array("php","html","css")); /* 建立一個嵌套的數組 */
 var_dump($a);
?>

2、print_r函數值顯示數組元素的鍵名和元素值。

執行個體2:

 代碼如下 複製代碼


<?php
 $b=array(1,2,3);
 print_r($b);
?>

測試數組


有時候我們不清楚某個變數是不是數組,可以用is_array()函數來測試判斷。

基本結構形式:

is_array ( 變 量 )

檢測變數是否數組,如果是則返回true,否則返回false。

執行個體:

 代碼如下 複製代碼

<?php
 $a="apple iphone";
 if(is_array($a)){
   var_dump($a);
  }
 else echo "不是數組";
?>

foreach遍曆數組


我們在運用數組時,常常要遍曆數組並獲得各個鍵或者元素值,php提供了一些專門遍曆數組的函數。這裡先介紹foreach遍曆數組函數的用法。

結構形式:

 代碼如下 複製代碼


 foreach ( array_expression as $value ) statement
/* array_expression是要遍曆的數組
   as作用是將數組的值賦給$value
   statement是後續語句
 */
執行個體1:

 <?php
 $color=array('white' => '白色' ,
       'black' => '黑色' ,
       'red' => '紅色' ,
       'green' => '綠色',
       'yellow' => '黃色');
 foreach( $color as $c) echo $c ."<br>";   
?>

通過foreach不僅可以獲得元素的值也可以獲得鍵名,結構形式:

  foreach ( array_expression as $key => $value ) statement

將以上執行個體中第7行的代碼:

 

 代碼如下 複製代碼

 foreach( $color as $c) echo $c ."<br>";
改為:


 foreach( $color as $key => $c) echo $key.$c ."<br>";


尋找數組元素值

php擷取數組鍵名可以用array_search()來實現,結構形式如下:

array_search( $needle,$haystack )
/* 參數$needle表示要尋找的值 */
/* $haystack表示尋找對象 */
array_search()函數返回的是鍵名,而不是布爾值,找不到時返回false。找到的元素如果正好是第一個元素,則返回0。而php會自動轉化成false,所以需要使用”===”判斷傳回值。(“===”判斷是否全等,詳:php關係運算子)

執行個體:

 代碼如下 複製代碼

<?php
 $s=array("a","b","c","d","e","f");
 $i=array_search("a",$s); /* 尋找數組是否有字元"a" */
 if($i===false)  /* 判斷尋找結果 */
  echo "在數組s中找不到字元'a'";
 else echo "輸出數組$s的鍵名:" .$i; /* 輸出鍵名 */ 
?>

計算數組元素個數

數組也像變數一樣可以進行運算,例如需要php統計數組元素個數時,我們可以利用count()函數來計算數組中元素的個數。

結構形式:

 代碼如下 複製代碼


 count ( $var,$mode )
/* $var參數$var通常是一個數組,函數返回var中的單元數目 */
/* mode是選擇性參數 */
執行個體:

<?php
 $a=array("peple","man","women");
 $b=count($a); /* 統計數組元素個數 */
 echo $b;
?>

數組排序

php提供了一系列的數組排序函數,我們可以根據需要對數組進行排序。數組的排序主要有三種方式:

按索引值排序

即按標識符ASCⅡ碼值的大小排列順序。

ksort(): 按照數群組識別碼順序排列
krsort(): 按照數群組識別碼逆序排
執行個體1:

 代碼如下 複製代碼
<?php
 $languages=array(
  'c'=>'php',
  'd'=>'asp',
  'a'=>'jsp',
  'b'=>'java'
 );
 krsort($languages);
 foreach($languages as $key=>$val){
  echo "$key = $val".'<br>';
 };
?>

按元素值排序

 asort(): 按照由小到大的順序對數組排序;
rsort(): 按照由大到小的順序對數組逆序排序。
將執行個體1的8-11行代碼改為:

 

 代碼如下 複製代碼
  asort($languages);
 print_r($languages);
 echo "<br>";
 rsort($languages);
 print_r($languages);

刪除原有鍵名排序

 sort(): 按照由小到大的順序對數組排序;
rsort(): 按照由大到小的順序對數組逆序排序。
將執行個體2的8-11行代碼改為:

 

 代碼如下 複製代碼

sort($languages);
 foreach($languages as $key=>$val){
  echo "languages[$key] = $val".'<br>';
 };

 

數組運算子

合并數組計算執行個體:

 代碼如下 複製代碼
<?php
 $a=array(
   'a'=>'php',
   'b'=>'html',
   'c'=>'css'
 );
 $b=array(
   'a'=>'asp',
   'b'=>'jsp'
 );
 $c=$a+$b; /* 合并數組 */
 var_dump($c);
 echo "<br>";
 $c=$b+$a; /* 調換順序合并數組 */
 var_dump($c); 
?>

數組的比較執行個體:

 代碼如下 複製代碼
<?php
 $a=array('php','asp');
 $b=array(1=>'asp',0=>'php');
 var_dump($a==$b);
 var_dump($a===$b);
?>

數組運算子
例子 名稱 結果
$a + $b 聯合 $a 和 $b 的聯合。
$a == $b 相等 如果 $a 和 $b 具有相同的鍵/值對則為 TRUE
$a === $b 全等 如果 $a 和 $b 具有相同的鍵/值對並且順序和類型都相同則為 TRUE
$a != $b 不等 如果 $a 不等於 $b 則為 TRUE
$a <> $b 不等 如果 $a 不等於 $b 則為 TRUE
$a !== $b 不全等 如果 $a 不全等於 $b 則為 TRUE

聯繫我們

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