PHP代碼:
<?php
$arr1=array(100,200,300,400);
$arr2=array("num"=>100,"name"=>"Liuxy","score"=>98);
print_r($arr1);
echo "<br>";
print_r($arr2);
?>
以上代碼的輸出結果如下:
Array ( [0] => 100 [1] => 200 [2] => 300 [3] => 400 )
Array ( [num] => 100 [name] => Liuxy [score] => 98 )
若要定義二維數組,可以嵌套地使用array函數,同C類似,也是把二維數組的每一行看作是一個一維數組,構成每一行的一維數組可以互不相同。如:
複製PHP內容到剪貼簿
PHP代碼:
$arr=array(
"row1"=>array(100,200,300,400),
"row2"=>array("num"=>100,"name"=>"Liuxy","score"=>98)
);
PHP數組元素的訪問同C類似,都是數組名[鍵名]的形式。
PHP數組的遍曆可以通過foreach語句實現,foreach語句格式如下:
foreach (數組名 as 變數名) 資料元素處理語句;
翻譯成C語言就是:
for (i=0;i<n; i++){變數名=a;其他包含“變數名”的處理語句}
foreach等價於前面的 for (i=0;i<n; i++)
as等價於“變數名”與a之間的等號,這下你明白了吧。
例如:
複製PHP內容到剪貼簿
PHP代碼:
<?php
$arr=array(1,2,3,4,5,6);
foreach ($arr as $value ) echo ”$value<br>”;
?>
輸出結果是什嗎?想想看。
如果還想把對應的鍵名也同時輸出出來,可以用這樣的形式:
foreach ($arr as $key=>$value) echo “鍵名為$key的元素值為$value”;
在C中遍曆二維數組我們一般用二重for迴圈,相應地,PHP中的foreach也可以嵌套使用,分析一下下面的程式你就明白了:
複製PHP內容到剪貼簿
PHP代碼:
<?php
$arr=array(
"row1"=>array(100,200,300,400),
"row2"=>array("num"=>100,"name"=>"Liuxy","score"=>98)
);
foreach ($arr as $key=>$value)
{
echo "$key=>$value";
echo "<br>";
foreach ($value as $k=>$var) echo "$k=>$var<br>";
}
?>
PHP的數組元素是可以動態增長的,這是C裡面不敢想的。為數組增加一個元素很簡單,同訪問數組元素一樣,只不過鍵名是新的或者為空白,如 $arr[new]=3; 或 $arr[]=3,這樣做的結果是PHP為數組$arr增加一個鍵名為new的元素其值為3,若鍵名為空白,則以當前整型鍵名的最大值加1作為預設的鍵名分配給新的元素。PHP的這種動態增長數組有時候很方便,但也帶來隱患,比如當我們企圖修改已存在的元素值而寫錯了鍵名時,就變成了新增一個元素,而這樣的邏輯錯誤,系統是不會報錯的。
可以增長就可以縮減,要想刪除一個數組元素,可以使用unset函數,如刪除上面新增的那個元素,可以寫成 unset($arr[new])。也可以使用unset函數刪除整個數組結構,如unset($arr),要注意這同逐個刪除全部數組元素不同,後者還保留有數組的結構。形象地說,後者是人去樓空,但樓還在,前者連樓也拆除了。有意思的是刪除數組全部元素後如果新增一個元素,它的預設鍵名將延續之前數組的最大鍵名遞增,要想從0開始,可以使用array_values函數重設,如$arr=array_values($arr)。
提醒大家的是,PHP為數組的排序、尋找、合并、拆分提供了大量函數,用到這些基本演算法時,不用再去翻資料結構課本了,呵呵……