Posted by 撒得一地 on 2015年9月29日 in PHP入門教程
國外穩定加速器推薦
vypr |
Nord
PHP中復合數據類型包括兩種,即數組和對象。
array(數組):一組數據的集合。
object(對象):對象是類型的實例,使用new命令來創建。
數組(array)
數組是一組數據的集合,它把一系列數據組織起來,形成一個可操作的整體。數組中可以包括很多數據類型,如字符串,整型,對象,數組,資源等。
PHP中的數組實際上是一個有序映射,映射是一種把values關聯到keys的類型。數組中的每個數據稱為一個元素,元素包括索引(鍵名)和值兩個部分。數組中的值還可以再是數組,這樣就形成了多維數組。
定義數組的語法格式如下:
$array = ('value1','value2'......)
或
$array[key] = 'value'
或
$array = array(key1=>value1,key2=>value2......)
元素的索引(key)可以由數字或字符串組成,元素的值(value)可以是任意類型的值。
其中,參數key是數組元素的下標,value是數組下標所對應的元素。所以,數組其實用逗號分隔的鍵(key) => 值(value)對。
最后一個數組單元之后的逗號可以省略,例如常用array(1,2)而不是array(1,2,)。對多行數組定義通常保留最后一個逗號,這樣要添加一個新單元時更方便。
自 5.4 起可以使用短數組定義語法,用 [] 替代 array()。
例子1:
$array ?= array(
"foo" ?=> ?"bar" ,
"bar" ?=> ?"foo" ,
);
// 自 PHP 5.4 起
$array ?= [
"foo" ?=> ?"bar" ,
"bar" ?=> ?"foo" ,
];
?>
此外 key 會有如下的強制轉換:
1. ?包含有合法整型值的字符串會被轉換為整型。例如鍵名 "8" 實際會被儲存為 8。但是 "08" 則不會強制轉換,因為其不是一個合法的十進制數值。
2. ?浮點數也會被轉換為整型,意味著其小數部分會被舍去。例如鍵名 8.7 實際會被儲存為 8。
3. ?布爾值也會被轉換成整型。即鍵名 true 實際會被儲存為 1 而鍵名 false 會被儲存為 0。
4. Null ?會被轉換為空字符串,即鍵名 null 實際會被儲存為 ""。
5. ?數組和對象不能被用為鍵名。堅持這么做會導致警告:Illegal offset type。
如果在數組定義中多個單元都使用了同一個鍵名,則只使用了最后一個,之前的都被覆蓋了。
例子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"
}
在數組中,如果想取得數組中某一個數的值,可以用數組名加下標(索引)的方法取得特定值。
如果對給出的值沒有指定鍵名,則取當前最大的整數索引值,而新的鍵名將是該值加一。如果指定的鍵名已經有了值,則該值會被覆蓋。
例子3:
$array = array(
1 => 3,
'a' => b,
1 => 4,
2 => 5,
5);
//如果想取得5,只要用$array[2]
echo $array[2]."
";
//修改$array[2]的值 將其值改為7
$array[2] = 7;
/*因為上面定義了兩個相同的索引1,不過后面
的后定義值會覆蓋前面的值,可以打印看下
*/
//print_r是php自定義函數,用于打印數組
print_r($array);
?>
上面的執行結果是先輸出5,然后打印出數組:
5
Array
(
[1] => 4
[a] => b
[2] => 7
[3] => 5
)
上面值為5沒定義鍵值,php會默認取之前最大的整數索引值的下一個整數(即原有的索引值加1)為其鍵值。php默認最小的整數索引值為0。
要修改某個值,通過其鍵名給該單元賦一個新值。要刪除某鍵值對,對其調用 unset() 函數。
例子4:
$arr ?= array( 5 ?=> ?1 , ?12 ?=> ?2 );
//將索引為5的值1改為42
$arr [ 5 ] = ?42 ;
//刪除數組中索引5和其對應的值
unset( $arr [ 5 ]);
//刪除整個數組
unset( $arr );
?>
對象(object)
php中應用到的編程方法有兩種:面向過程和面向對象。面向對象是模擬現實世界來進行編程的一種方法。
要創建一個新的對象 object ,使用 new 語句實例化一個類:
class ?foo
{
function ?do_foo ()
{
echo ?"Doing foo." ;
}
}
$bar ?= new ?foo ;
$bar -> do_foo ();
?>
這部分放在后面講解。
... other posts by psz1992