php的两种复合数据类型是什么意思_2.4PHP复合数据类型:数组和对象
Posted by 撒得一地 on 2015年9月29日 in PHP入門教程
國(guó)外穩(wěn)定加速器推薦
vypr |
Nord
PHP中復(fù)合數(shù)據(jù)類型包括兩種,即數(shù)組和對(duì)象。
array(數(shù)組):一組數(shù)據(jù)的集合。
object(對(duì)象):對(duì)象是類型的實(shí)例,使用new命令來(lái)創(chuàng)建。
數(shù)組(array)
數(shù)組是一組數(shù)據(jù)的集合,它把一系列數(shù)據(jù)組織起來(lái),形成一個(gè)可操作的整體。數(shù)組中可以包括很多數(shù)據(jù)類型,如字符串,整型,對(duì)象,數(shù)組,資源等。
PHP中的數(shù)組實(shí)際上是一個(gè)有序映射,映射是一種把values關(guān)聯(lián)到keys的類型。數(shù)組中的每個(gè)數(shù)據(jù)稱為一個(gè)元素,元素包括索引(鍵名)和值兩個(gè)部分。數(shù)組中的值還可以再是數(shù)組,這樣就形成了多維數(shù)組。
定義數(shù)組的語(yǔ)法格式如下:
$array = ('value1','value2'......)
或
$array[key] = 'value'
或
$array = array(key1=>value1,key2=>value2......)
元素的索引(key)可以由數(shù)字或字符串組成,元素的值(value)可以是任意類型的值。
其中,參數(shù)key是數(shù)組元素的下標(biāo),value是數(shù)組下標(biāo)所對(duì)應(yīng)的元素。所以,數(shù)組其實(shí)用逗號(hào)分隔的鍵(key) => 值(value)對(duì)。
最后一個(gè)數(shù)組單元之后的逗號(hào)可以省略,例如常用array(1,2)而不是array(1,2,)。對(duì)多行數(shù)組定義通常保留最后一個(gè)逗號(hào),這樣要添加一個(gè)新單元時(shí)更方便。
自 5.4 起可以使用短數(shù)組定義語(yǔ)法,用 [] 替代 array()。
例子1:
$array ?= array(
"foo" ?=> ?"bar" ,
"bar" ?=> ?"foo" ,
);
// 自 PHP 5.4 起
$array ?= [
"foo" ?=> ?"bar" ,
"bar" ?=> ?"foo" ,
];
?>
此外 key 會(huì)有如下的強(qiáng)制轉(zhuǎn)換:
1. ?包含有合法整型值的字符串會(huì)被轉(zhuǎn)換為整型。例如鍵名 "8" 實(shí)際會(huì)被儲(chǔ)存為 8。但是 "08" 則不會(huì)強(qiáng)制轉(zhuǎn)換,因?yàn)槠洳皇且粋€(gè)合法的十進(jìn)制數(shù)值。
2. ?浮點(diǎn)數(shù)也會(huì)被轉(zhuǎn)換為整型,意味著其小數(shù)部分會(huì)被舍去。例如鍵名 8.7 實(shí)際會(huì)被儲(chǔ)存為 8。
3. ?布爾值也會(huì)被轉(zhuǎn)換成整型。即鍵名 true 實(shí)際會(huì)被儲(chǔ)存為 1 而鍵名 false 會(huì)被儲(chǔ)存為 0。
4. Null ?會(huì)被轉(zhuǎn)換為空字符串,即鍵名 null 實(shí)際會(huì)被儲(chǔ)存為 ""。
5. ?數(shù)組和對(duì)象不能被用為鍵名。堅(jiān)持這么做會(huì)導(dǎo)致警告:Illegal offset type。
如果在數(shù)組定義中多個(gè)單元都使用了同一個(gè)鍵名,則只使用了最后一個(gè),之前的都被覆蓋了。
例子2:
$array ?= array(
1 ? ? => ?"a" ,
"1" ? => ?"b" ,
1.5 ? => ?"c" ,//1.5被替換為1
true ?=> ?"d" ,//true被替換為1
);
var_dump ( $array );
?>
以上輸出:
array(1) {
[1]=>string(1) "d"
}
在數(shù)組中,如果想取得數(shù)組中某一個(gè)數(shù)的值,可以用數(shù)組名加下標(biāo)(索引)的方法取得特定值。
如果對(duì)給出的值沒有指定鍵名,則取當(dāng)前最大的整數(shù)索引值,而新的鍵名將是該值加一。如果指定的鍵名已經(jīng)有了值,則該值會(huì)被覆蓋。
例子3:
$array = array(
1 => 3,
'a' => b,
1 => 4,
2 => 5,
5);
//如果想取得5,只要用$array[2]
echo $array[2]."
";
//修改$array[2]的值 將其值改為7
$array[2] = 7;
/*因?yàn)樯厦娑x了兩個(gè)相同的索引1,不過后面
的后定義值會(huì)覆蓋前面的值,可以打印看下
*/
//print_r是php自定義函數(shù),用于打印數(shù)組
print_r($array);
?>
上面的執(zhí)行結(jié)果是先輸出5,然后打印出數(shù)組:
5
Array
(
[1] => 4
[a] => b
[2] => 7
[3] => 5
)
上面值為5沒定義鍵值,php會(huì)默認(rèn)取之前最大的整數(shù)索引值的下一個(gè)整數(shù)(即原有的索引值加1)為其鍵值。php默認(rèn)最小的整數(shù)索引值為0。
要修改某個(gè)值,通過其鍵名給該單元賦一個(gè)新值。要?jiǎng)h除某鍵值對(duì),對(duì)其調(diào)用 unset() 函數(shù)。
例子4:
$arr ?= array( 5 ?=> ?1 , ?12 ?=> ?2 );
//將索引為5的值1改為42
$arr [ 5 ] = ?42 ;
//刪除數(shù)組中索引5和其對(duì)應(yīng)的值
unset( $arr [ 5 ]);
//刪除整個(gè)數(shù)組
unset( $arr );
?>
對(duì)象(object)
php中應(yīng)用到的編程方法有兩種:面向過程和面向?qū)ο蟆C嫦驅(qū)ο笫悄M現(xiàn)實(shí)世界來(lái)進(jìn)行編程的一種方法。
要?jiǎng)?chuàng)建一個(gè)新的對(duì)象 object ,使用 new 語(yǔ)句實(shí)例化一個(gè)類:
class ?foo
{
function ?do_foo ()
{
echo ?"Doing foo." ;
}
}
$bar ?= new ?foo ;
$bar -> do_foo ();
?>
這部分放在后面講解。
... other posts by psz1992
總結(jié)
以上是生活随笔為你收集整理的php的两种复合数据类型是什么意思_2.4PHP复合数据类型:数组和对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 思源黑体字体问题
- 下一篇: I.MX6开发板移植Linux4.1.1
