在網(wǎng)頁(yè)設(shè)計(jì)中復(fù)合類型包括兩種數(shù)據(jù),即數(shù)組和對(duì)象。
數(shù)組在PHP中數(shù)組實(shí)際上是一個(gè)有序映射。映射是一種把values關(guān)聯(lián)到keys的類型。此類型在很多方面做了優(yōu)化,因此可以把它當(dāng)成真正的數(shù)組,或列表(向量)、散列表(是映射的一種實(shí)現(xiàn))、字典、集合、棧、隊(duì)列以及更多可能性。數(shù)組元素的值也可以是另一個(gè)數(shù)組。樹形結(jié)構(gòu)和多維數(shù)組也是允許的。
定義數(shù)組可以使用array()結(jié)構(gòu)。該函數(shù)能夠接受任意數(shù)量用逗號(hào)分隔的鍵(key)/值(value)對(duì),鍵值之間通過(guò)=>運(yùn)算符連接。鍵(key)可以是一個(gè)整數(shù)或字符串,值(value)可以是任意類型的數(shù)據(jù)。例如:<?php$arr = array("foo" => "bar", 12 => true);echo $arr["foo"]; //barecho $arr[12]; //1?>在PHP中索引數(shù)組與關(guān)聯(lián)數(shù)組是相同的,它們都可以同時(shí)包含整型和字符串的下標(biāo)。例如:<?php$arr = array("somearray" => array(6 => 5, 13 => 9, "a" => 42));echo $arr["somearray"][6]; //5echo $arr["somearray"][13]; //9echo $arr["somearray"]["a"]; //42?>
如果給出的值沒(méi)有指定鍵名,則取當(dāng)前最大的整數(shù)索引值,而新的鍵名將是該值加1。如果指定的鍵名已經(jīng)有了值,則該值會(huì)被覆蓋。
使用true作為鍵名,將定義整數(shù)1為鍵名。使用false作為鍵名,將定義整數(shù)0為鍵名。使用NULL作為鍵名,將定義空字符串為鍵名。使用空字符串作為鍵名將新建(或覆蓋)一個(gè)用空字符串作為鍵名的值,這和用空的方括號(hào)不一樣。注意:不能使用數(shù)組和對(duì)象作為鍵(key)。
另外,還可以通過(guò)在方括號(hào)內(nèi)指定鍵名來(lái)給數(shù)組賦值。也可以省略鍵名,在這種情況下給變量名加上一對(duì)空的方括號(hào)(“[]”)。如:$arr[key] = value;$arr[] = value;這是一種定義數(shù)組的替換方法。要改變一個(gè)值,只要給它賦一個(gè)新值。如果要?jiǎng)h除一個(gè)鍵/值對(duì),可以使用unset()函數(shù)。如:<?php$arr = array(5 => 1, 12 => 2);$arr[] = 56; //等于$arr[13] = 56;$arr["x"] = 42; //添加一個(gè)新元素,鍵名為"x"unset($arr[5]); //從數(shù)組中移除一個(gè)元素unset($arr); //刪除整個(gè)數(shù)組?>
注意:這里所使用的最大整數(shù)鍵名不一定就在當(dāng)前數(shù)組中。它只要在上次數(shù)組重新生成索引后曾經(jīng)存在過(guò)就行了。如: <?php $array = array(1, 2, 3, 4, 5); //創(chuàng)建一個(gè)簡(jiǎn)單的數(shù)組 print_r($array); //現(xiàn)在刪除其中的所有元素,但保持?jǐn)?shù)組本身不變 foreach ($array as $i => $value) { unset($array[$i]); } print_r($array); $array[] = 6; //添加一個(gè)單元(注意新的鍵名是5,而不0) print_r($array); $array = array_values($array); //重新索引 $array[] = 7; print_r($array); ?>
對(duì)象
對(duì)象是面向?qū)ο缶幊痰幕A(chǔ),在PHP中使用new語(yǔ)句實(shí)例化一個(gè)類,即可創(chuàng)建一個(gè)對(duì)象,如:<?phpclass foo{ //創(chuàng)建一個(gè)類 function do_foo() { echo "Doing foo."; }}$bar = new foo; //創(chuàng)建對(duì)象$bar->do_foo(); //調(diào)用對(duì)象包含的函數(shù)?>
以上就是網(wǎng)頁(yè)設(shè)計(jì)中的數(shù)組和對(duì)象。