PHP 6:PHP 基本数据类型
生活随笔
收集整理的這篇文章主要介紹了
PHP 6:PHP 基本数据类型
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
本章將介紹PHP基本類型。
相信我們已經(jīng)熟悉了C/C++,C#或者Java里的任意一種語言。本章會以C#為比較語言。
OK,如果你想學(xué)PHP,你最先考慮的是什么呢?
我相信肯定是下面的幾個問題:
還是先把上一篇文章所引用的代碼拿出來吧。
PHP實(shí)例代碼
?1?function?display_user_urls($url_array)
?2?{
?3???//?display?the?table?of?URLs
?4?
?5???//?set?global?variable,?so?we?can?test?later?if?this?is?on?the?page
?6???global?$bm_table;
?7???$bm_table?=?true;
?8??>
?9???<br?/>
10???<form?name='bm_table'?action='delete_bms.php'?method='post'>
11???<table?width=300?cellpadding=2?cellspacing=0>
12???<?php
13???$color?=?"#cccccc";
14???echo?"<tr?bgcolor='$color'><td><strong>Bookmark</strong></td>";
15???echo?"<td><strong>Delete?</strong></td></tr>";
16???if?(is_array($url_array)?&&?count($url_array)>0)
17???{
18?????foreach?($url_array?as?$url)
19?????{
20???????if?($color?==?"#cccccc")
21?????????$color?=?"#ffffff";
22???????else
23?????????$color?=?"#cccccc";
24???????//?remember?to?call?htmlspecialchars()?when?we?are?displaying?user?data
25???????echo?"<tr?bgcolor='$color'><td><a?href=\"$url\">".htmlspecialchars($url)."</a></td>";
26???????echo?"<td><input?type='checkbox'?name=\"del_me[]\"
27??????????????value=\"$url\"></td>";
28???????echo?"</tr>";?
29?????}
30???}
31???else
32?????echo?"<tr><td>No?bookmarks?on?record</td></tr>";
33??>
34???</table>?
35???</form>
36?<?php
37?} 逐一討論吧。
PHP有哪幾種數(shù)據(jù)類型,它們和其他語言有什么區(qū)別呢? ????? PHP支持8種原始的數(shù)據(jù)類型。
其中包括4種標(biāo)量類型:
Array數(shù)據(jù)類型還是比較特殊的,因?yàn)樵贑#語言里就沒有這種數(shù)據(jù)類型,其他語言,C/C++,Java也是沒有的。你可以把他當(dāng)成C#里的數(shù)組看待就可以了。另外,看看PHP官方網(wǎng)站上是怎么說的。
?? PHP 中的數(shù)組實(shí)際上是一個有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了優(yōu)化,因此可以把它當(dāng)成真正的數(shù)組來使用,或列表(矢量),散列表(是圖的一種實(shí)現(xiàn)),字典,集合,棧,隊(duì)列以及更多可能性。因?yàn)榭梢杂昧硪粋€ PHP 數(shù)組作為值,也可以很容易地模擬樹。
看看Array的用法吧。我們可以新建一個Array對象,由于Array是key和value映射的。所以Array支持一定數(shù)量以分號分隔的值對。給個例子,代碼如下:
<?php
$arr?=?array("Hello"?=>?"Word",?12?=>?true);
echo?$arr["Hello"];?//?bar
echo?$arr[12];????//?1
?>? 請記住一點(diǎn):key 可以是整型或者字符串。如果鍵名是一個整型的標(biāo)準(zhǔn)表達(dá)方法,取整,如果是float型,轉(zhuǎn)化為整型。與之對比,值則可以為任何值。
如果你想實(shí)現(xiàn)多維數(shù)組怎么辦?在PHP沒有提供類系與C#的多維數(shù)組的寫法,為什么呢?我的觀點(diǎn)是這里的數(shù)組早已經(jīng)不是C# 等語言里的單純的數(shù)組了。它已經(jīng)擴(kuò)展了數(shù)組,可以哈希表,字典等等。所以提供多維數(shù)組確實(shí)沒有必要。雖說如此,但是可以實(shí)現(xiàn)類似的功能,如下代碼:
<?php
$arr?=?array("somearray"?=>?array(6?=>?5,?13?=>?9,?"a"?=>?42));
echo?$arr["somearray"][6];????//?5
echo?$arr["somearray"][13];??//?9
echo?$arr["somearray"]["a"];??//?42
?>? 既然討論到這里,你可能想想知道如何新建或刪除一個數(shù)組對象。什么都不說了,看看下面代碼:
?1??php
?2?$arr?=?array(5?=>?1,?12?=>?2);
?3?$arr[]?=?56;????//?相當(dāng)于?$arr[13]?=?56;
?4?????????????????//因?yàn)榈诙€元素的鍵是12???????
?5?$arr["x"]?=?42;?//?創(chuàng)建一個新元素,且鍵為字符串
?6?????????????????//"x",值位42.
?7?unset($arr[5]);?//刪除鍵位5的元素。
?8?unset($arr);????//?刪除整個數(shù)組
?9?????????????????//unset()是一函數(shù),從字面的意思上??????????????????????
?????????????????? //看也知道是撤銷設(shè)置
10??> 怎么樣,基本上了解了Array了吧。
至于Object嘛,感覺和C#里的沒什么區(qū)別。
NULL 對象就有意思了,這個在C# 里是沒有的,C#倒是有個null。
既然如此,我們?nèi)绾闻袛嗄硞€變量為NULL ,相當(dāng)?shù)暮唵?#xff0c;調(diào)用is_null(),如何將某個變量設(shè)為NULL ,一種方法是調(diào)用unset().
看看Resource吧,稱為資源。它保存了到外部資源的一個引用。資源是通過專門的函數(shù)來建立和使用的。 由于資源類型變量保存為打開文件、數(shù)據(jù)庫連接、圖形畫布區(qū)域等的特殊句柄,因此無法將其它類型的值轉(zhuǎn)換為資源。 由于 PHP4 Zend 引擎引進(jìn)了資源計(jì)數(shù)系統(tǒng),可以自動檢測到一個資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會被垃圾回收系統(tǒng)釋放。由于此原因,很少需要用某些 free-result 函數(shù)來手工釋放內(nèi)存。垃圾回收?
除了這些還有其他的嗎?當(dāng)然是肯定的。還有一些偽類型:
???????? mixed
?????????? mixed 說明一個參數(shù)可以接受多種不同的(但并不必須是所有的)類型。
<?php
?$name="your?name";//name位string類型。
?$total=12;????????//total為整型
?> ??????????? 那么如何轉(zhuǎn)型呢,我覺得和C# 差不多的。就不贅述了。
???????
相信我們已經(jīng)熟悉了C/C++,C#或者Java里的任意一種語言。本章會以C#為比較語言。
OK,如果你想學(xué)PHP,你最先考慮的是什么呢?
我相信肯定是下面的幾個問題:
- PHP有哪幾種數(shù)據(jù)類型,它們和其他語言有什么區(qū)別呢?
- 一種語言對于數(shù)據(jù)類型,有強(qiáng)類型和弱類型之分,PHP屬于哪一種呢?
- PHP有什么獨(dú)特的地方呢?
還是先把上一篇文章所引用的代碼拿出來吧。
PHP實(shí)例代碼
?1?function?display_user_urls($url_array)
?2?{
?3???//?display?the?table?of?URLs
?4?
?5???//?set?global?variable,?so?we?can?test?later?if?this?is?on?the?page
?6???global?$bm_table;
?7???$bm_table?=?true;
?8??>
?9???<br?/>
10???<form?name='bm_table'?action='delete_bms.php'?method='post'>
11???<table?width=300?cellpadding=2?cellspacing=0>
12???<?php
13???$color?=?"#cccccc";
14???echo?"<tr?bgcolor='$color'><td><strong>Bookmark</strong></td>";
15???echo?"<td><strong>Delete?</strong></td></tr>";
16???if?(is_array($url_array)?&&?count($url_array)>0)
17???{
18?????foreach?($url_array?as?$url)
19?????{
20???????if?($color?==?"#cccccc")
21?????????$color?=?"#ffffff";
22???????else
23?????????$color?=?"#cccccc";
24???????//?remember?to?call?htmlspecialchars()?when?we?are?displaying?user?data
25???????echo?"<tr?bgcolor='$color'><td><a?href=\"$url\">".htmlspecialchars($url)."</a></td>";
26???????echo?"<td><input?type='checkbox'?name=\"del_me[]\"
27??????????????value=\"$url\"></td>";
28???????echo?"</tr>";?
29?????}
30???}
31???else
32?????echo?"<tr><td>No?bookmarks?on?record</td></tr>";
33??>
34???</table>?
35???</form>
36?<?php
37?} 逐一討論吧。
其中包括4種標(biāo)量類型:
- Integer
- Float
- String
- Boolean
- Array
- Object
- NULL
- Resource
- Integer:int
- Float:float
- String:string
- Boolean:bool
Array數(shù)據(jù)類型還是比較特殊的,因?yàn)樵贑#語言里就沒有這種數(shù)據(jù)類型,其他語言,C/C++,Java也是沒有的。你可以把他當(dāng)成C#里的數(shù)組看待就可以了。另外,看看PHP官方網(wǎng)站上是怎么說的。
?? PHP 中的數(shù)組實(shí)際上是一個有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了優(yōu)化,因此可以把它當(dāng)成真正的數(shù)組來使用,或列表(矢量),散列表(是圖的一種實(shí)現(xiàn)),字典,集合,棧,隊(duì)列以及更多可能性。因?yàn)榭梢杂昧硪粋€ PHP 數(shù)組作為值,也可以很容易地模擬樹。
看看Array的用法吧。我們可以新建一個Array對象,由于Array是key和value映射的。所以Array支持一定數(shù)量以分號分隔的值對。給個例子,代碼如下:
<?php
$arr?=?array("Hello"?=>?"Word",?12?=>?true);
echo?$arr["Hello"];?//?bar
echo?$arr[12];????//?1
?>? 請記住一點(diǎn):key 可以是整型或者字符串。如果鍵名是一個整型的標(biāo)準(zhǔn)表達(dá)方法,取整,如果是float型,轉(zhuǎn)化為整型。與之對比,值則可以為任何值。
如果你想實(shí)現(xiàn)多維數(shù)組怎么辦?在PHP沒有提供類系與C#的多維數(shù)組的寫法,為什么呢?我的觀點(diǎn)是這里的數(shù)組早已經(jīng)不是C# 等語言里的單純的數(shù)組了。它已經(jīng)擴(kuò)展了數(shù)組,可以哈希表,字典等等。所以提供多維數(shù)組確實(shí)沒有必要。雖說如此,但是可以實(shí)現(xiàn)類似的功能,如下代碼:
<?php
$arr?=?array("somearray"?=>?array(6?=>?5,?13?=>?9,?"a"?=>?42));
echo?$arr["somearray"][6];????//?5
echo?$arr["somearray"][13];??//?9
echo?$arr["somearray"]["a"];??//?42
?>? 既然討論到這里,你可能想想知道如何新建或刪除一個數(shù)組對象。什么都不說了,看看下面代碼:
?1??php
?2?$arr?=?array(5?=>?1,?12?=>?2);
?3?$arr[]?=?56;????//?相當(dāng)于?$arr[13]?=?56;
?4?????????????????//因?yàn)榈诙€元素的鍵是12???????
?5?$arr["x"]?=?42;?//?創(chuàng)建一個新元素,且鍵為字符串
?6?????????????????//"x",值位42.
?7?unset($arr[5]);?//刪除鍵位5的元素。
?8?unset($arr);????//?刪除整個數(shù)組
?9?????????????????//unset()是一函數(shù),從字面的意思上??????????????????????
?????????????????? //看也知道是撤銷設(shè)置
10??> 怎么樣,基本上了解了Array了吧。
至于Object嘛,感覺和C#里的沒什么區(qū)別。
NULL 對象就有意思了,這個在C# 里是沒有的,C#倒是有個null。
特殊的 NULL 值表示一個變量沒有值,NULL 類型唯一可能的值就是 NULL。注意了 NULL 類型是 PHP 4 引進(jìn)的。
在下列情況下一個變量被認(rèn)為是 NULL:
-
被賦值為 NULL。
-
尚未被賦值。
-
被unset()。
既然如此,我們?nèi)绾闻袛嗄硞€變量為NULL ,相當(dāng)?shù)暮唵?#xff0c;調(diào)用is_null(),如何將某個變量設(shè)為NULL ,一種方法是調(diào)用unset().
看看Resource吧,稱為資源。它保存了到外部資源的一個引用。資源是通過專門的函數(shù)來建立和使用的。 由于資源類型變量保存為打開文件、數(shù)據(jù)庫連接、圖形畫布區(qū)域等的特殊句柄,因此無法將其它類型的值轉(zhuǎn)換為資源。 由于 PHP4 Zend 引擎引進(jìn)了資源計(jì)數(shù)系統(tǒng),可以自動檢測到一個資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會被垃圾回收系統(tǒng)釋放。由于此原因,很少需要用某些 free-result 函數(shù)來手工釋放內(nèi)存。垃圾回收?
除了這些還有其他的嗎?當(dāng)然是肯定的。還有一些偽類型:
???????? mixed
?????????? mixed 說明一個參數(shù)可以接受多種不同的(但并不必須是所有的)類型。
?????????? 例如 gettype可以接受所有的 PHP 類型,str_replace可以接受字符串和數(shù)組。
??????? number
??????????? number 說明一個參數(shù)可以是 int或float.
??????? callback
????????? 有些諸如 call_user_function() 或 usort() 的函數(shù)接受用戶自定義的函數(shù)作為一個參數(shù)。Callback 函數(shù)不僅可以是一個簡單的函數(shù),它還可以是一個對象的方法,包括靜態(tài)類的方法。
2 .一種語言對于數(shù)據(jù)類型,有強(qiáng)類型和弱類型之分,PHP屬于哪一種呢?
???????????? PHP是弱類型的。在PHP里,變量的類型是賦給它們的值決定的。如果賦的值是整型,那么變量就是整型,如果是字符串,就是字符串型。看如下代碼:<?php
?$name="your?name";//name位string類型。
?$total=12;????????//total為整型
?> ??????????? 那么如何轉(zhuǎn)型呢,我覺得和C# 差不多的。就不贅述了。
???????
總結(jié)
以上是生活随笔為你收集整理的PHP 6:PHP 基本数据类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 与afreez一起学习DirectFB之
- 下一篇: 去了趟afei那里