入門知識:動態網頁PHP編程中數組的基礎知識

來源:互聯網
上載者:User

關於數組:

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) }
---------------------------------------------------------------------



相關文章

聯繫我們

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