PHP中的數(shù)組實際上是一個有序映射。映射是一種把values關(guān)聯(lián)到keys的類型。此類型在很多方面做了優(yōu)化,因此可以把它當(dāng)成真正的數(shù)組,或列表(向量),散列表(是映射的一種實現(xiàn)),字典,集合,棧,隊列以及更多可能性。數(shù)組元素的值也可以是另一個數(shù)組。樹形結(jié)構(gòu)和多維數(shù)組也是允許的。
可以用array()語言結(jié)構(gòu)來新建一個array。它接受任意數(shù)量用逗號分隔的鍵(key)=>值(value)對。
key可以是integer或者string。如果key是一個integer的標(biāo)準(zhǔn)表示,則被解釋為整數(shù)(例如"8"將被解釋為8,而"08"將被解釋為"08")。key中的浮點數(shù)被取整為integer。在PHP中索引數(shù)組與關(guān)聯(lián)數(shù)組是相同的,它們都可以同時包含整型和字符串的下標(biāo)。
值可以是任意的PHP類型。
如果對給出的值沒有指定鍵名,則取當(dāng)前最大的整數(shù)索引值,而新的鍵名將是該值加一。如果指定的鍵名已經(jīng)有了值,則該值會被覆蓋。
使用TRUE作為鍵名將使integer1成為鍵名。使用FALSE作為鍵名將使integer0成為鍵名。使用NULL作為鍵名將等同于使用空字符串。使用空字符串作為鍵名將新建(或覆蓋)一個用空字符串作為鍵名的值,這和用空的方括號不一樣。
不能用數(shù)組和對象作為鍵(key)。這樣做會導(dǎo)致一個警告:Illegaloffsettype。
用方括號的語法新建/修改如果$arr還不存在,將會新建一個。這也是一種定義數(shù)組的替換方法。要改變一個值,只要給它賦一個新值。如果要刪除一個鍵名/值對,要對它用unset()。
Note:如果給出方括號但沒有指定鍵名,則取當(dāng)前最大整數(shù)索引值,新的鍵名將是該值+1。如果當(dāng)前還沒有整數(shù)索引,則鍵名將為0。如果指定的鍵名已經(jīng)有值了,該值將被覆蓋。
注意這里所使用的最大整數(shù)鍵名不一定當(dāng)前就在數(shù)組中。它只要在上次數(shù)組重新生成索引后曾經(jīng)存在過就行了。
應(yīng)該始終在用字符串表示的數(shù)組索引上加上引號。例如用$foo['bar']而不是$foo[bar]。但是為什么$foo[bar]錯了呢?
原因是此代碼中有一個未定義的常量(bar)而不是字符串('bar'-注意引號),而PHP可能會在以后定義此常量,不幸的是你的代碼中有同樣的名字。它能運行,是因為PHP自動將裸字符串(沒有引號的字符串且不對應(yīng)于任何已知符號)轉(zhuǎn)換成一個其值為該裸字符串的正常字符串。例如,如果沒有常量定義為bar,PHP將把它替代為'bar'并使用之。
更多信息請查看IT技術(shù)專欄