PHP 6:PHP 基本数据类型
生活随笔
收集整理的這篇文章主要介紹了
PHP 6:PHP 基本数据类型
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本章將介紹PHP基本類型。
相信我們已經熟悉了C/C++,C#或者Java里的任意一種語言。本章會以C#為比較語言。
OK,如果你想學PHP,你最先考慮的是什么呢?
我相信肯定是下面的幾個問題:
還是先把上一篇文章所引用的代碼拿出來吧。
PHP實例代碼
?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有哪幾種數據類型,它們和其他語言有什么區別呢? ????? PHP支持8種原始的數據類型。
其中包括4種標量類型:
Array數據類型還是比較特殊的,因為在C#語言里就沒有這種數據類型,其他語言,C/C++,Java也是沒有的。你可以把他當成C#里的數組看待就可以了。另外,看看PHP官方網站上是怎么說的。
?? PHP 中的數組實際上是一個有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了優化,因此可以把它當成真正的數組來使用,或列表(矢量),散列表(是圖的一種實現),字典,集合,棧,隊列以及更多可能性。因為可以用另一個 PHP 數組作為值,也可以很容易地模擬樹。
看看Array的用法吧。我們可以新建一個Array對象,由于Array是key和value映射的。所以Array支持一定數量以分號分隔的值對。給個例子,代碼如下:
<?php
$arr?=?array("Hello"?=>?"Word",?12?=>?true);
echo?$arr["Hello"];?//?bar
echo?$arr[12];????//?1
?>? 請記住一點:key 可以是整型或者字符串。如果鍵名是一個整型的標準表達方法,取整,如果是float型,轉化為整型。與之對比,值則可以為任何值。
如果你想實現多維數組怎么辦?在PHP沒有提供類系與C#的多維數組的寫法,為什么呢?我的觀點是這里的數組早已經不是C# 等語言里的單純的數組了。它已經擴展了數組,可以哈希表,字典等等。所以提供多維數組確實沒有必要。雖說如此,但是可以實現類似的功能,如下代碼:
<?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
?>? 既然討論到這里,你可能想想知道如何新建或刪除一個數組對象。什么都不說了,看看下面代碼:
?1??php
?2?$arr?=?array(5?=>?1,?12?=>?2);
?3?$arr[]?=?56;????//?相當于?$arr[13]?=?56;
?4?????????????????//因為第二個元素的鍵是12???????
?5?$arr["x"]?=?42;?//?創建一個新元素,且鍵為字符串
?6?????????????????//"x",值位42.
?7?unset($arr[5]);?//刪除鍵位5的元素。
?8?unset($arr);????//?刪除整個數組
?9?????????????????//unset()是一函數,從字面的意思上??????????????????????
?????????????????? //看也知道是撤銷設置
10??> 怎么樣,基本上了解了Array了吧。
至于Object嘛,感覺和C#里的沒什么區別。
NULL 對象就有意思了,這個在C# 里是沒有的,C#倒是有個null。
既然如此,我們如何判斷某個變量為NULL ,相當的簡單,調用is_null(),如何將某個變量設為NULL ,一種方法是調用unset().
看看Resource吧,稱為資源。它保存了到外部資源的一個引用。資源是通過專門的函數來建立和使用的。 由于資源類型變量保存為打開文件、數據庫連接、圖形畫布區域等的特殊句柄,因此無法將其它類型的值轉換為資源。 由于 PHP4 Zend 引擎引進了資源計數系統,可以自動檢測到一個資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會被垃圾回收系統釋放。由于此原因,很少需要用某些 free-result 函數來手工釋放內存。垃圾回收?
除了這些還有其他的嗎?當然是肯定的。還有一些偽類型:
???????? mixed
?????????? mixed 說明一個參數可以接受多種不同的(但并不必須是所有的)類型。
<?php
?$name="your?name";//name位string類型。
?$total=12;????????//total為整型
?> ??????????? 那么如何轉型呢,我覺得和C# 差不多的。就不贅述了。
???????
相信我們已經熟悉了C/C++,C#或者Java里的任意一種語言。本章會以C#為比較語言。
OK,如果你想學PHP,你最先考慮的是什么呢?
我相信肯定是下面的幾個問題:
- PHP有哪幾種數據類型,它們和其他語言有什么區別呢?
- 一種語言對于數據類型,有強類型和弱類型之分,PHP屬于哪一種呢?
- PHP有什么獨特的地方呢?
還是先把上一篇文章所引用的代碼拿出來吧。
PHP實例代碼
?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種標量類型:
- Integer
- Float
- String
- Boolean
- Array
- Object
- NULL
- Resource
- Integer:int
- Float:float
- String:string
- Boolean:bool
Array數據類型還是比較特殊的,因為在C#語言里就沒有這種數據類型,其他語言,C/C++,Java也是沒有的。你可以把他當成C#里的數組看待就可以了。另外,看看PHP官方網站上是怎么說的。
?? PHP 中的數組實際上是一個有序圖。圖是一種把 values 映射到 keys 的類型。此類型在很多方面做了優化,因此可以把它當成真正的數組來使用,或列表(矢量),散列表(是圖的一種實現),字典,集合,棧,隊列以及更多可能性。因為可以用另一個 PHP 數組作為值,也可以很容易地模擬樹。
看看Array的用法吧。我們可以新建一個Array對象,由于Array是key和value映射的。所以Array支持一定數量以分號分隔的值對。給個例子,代碼如下:
<?php
$arr?=?array("Hello"?=>?"Word",?12?=>?true);
echo?$arr["Hello"];?//?bar
echo?$arr[12];????//?1
?>? 請記住一點:key 可以是整型或者字符串。如果鍵名是一個整型的標準表達方法,取整,如果是float型,轉化為整型。與之對比,值則可以為任何值。
如果你想實現多維數組怎么辦?在PHP沒有提供類系與C#的多維數組的寫法,為什么呢?我的觀點是這里的數組早已經不是C# 等語言里的單純的數組了。它已經擴展了數組,可以哈希表,字典等等。所以提供多維數組確實沒有必要。雖說如此,但是可以實現類似的功能,如下代碼:
<?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
?>? 既然討論到這里,你可能想想知道如何新建或刪除一個數組對象。什么都不說了,看看下面代碼:
?1??php
?2?$arr?=?array(5?=>?1,?12?=>?2);
?3?$arr[]?=?56;????//?相當于?$arr[13]?=?56;
?4?????????????????//因為第二個元素的鍵是12???????
?5?$arr["x"]?=?42;?//?創建一個新元素,且鍵為字符串
?6?????????????????//"x",值位42.
?7?unset($arr[5]);?//刪除鍵位5的元素。
?8?unset($arr);????//?刪除整個數組
?9?????????????????//unset()是一函數,從字面的意思上??????????????????????
?????????????????? //看也知道是撤銷設置
10??> 怎么樣,基本上了解了Array了吧。
至于Object嘛,感覺和C#里的沒什么區別。
NULL 對象就有意思了,這個在C# 里是沒有的,C#倒是有個null。
特殊的 NULL 值表示一個變量沒有值,NULL 類型唯一可能的值就是 NULL。注意了 NULL 類型是 PHP 4 引進的。
在下列情況下一個變量被認為是 NULL:
-
被賦值為 NULL。
-
尚未被賦值。
-
被unset()。
既然如此,我們如何判斷某個變量為NULL ,相當的簡單,調用is_null(),如何將某個變量設為NULL ,一種方法是調用unset().
看看Resource吧,稱為資源。它保存了到外部資源的一個引用。資源是通過專門的函數來建立和使用的。 由于資源類型變量保存為打開文件、數據庫連接、圖形畫布區域等的特殊句柄,因此無法將其它類型的值轉換為資源。 由于 PHP4 Zend 引擎引進了資源計數系統,可以自動檢測到一個資源不再被引用了(和 Java 一樣)。這種情況下此資源使用的所有外部資源都會被垃圾回收系統釋放。由于此原因,很少需要用某些 free-result 函數來手工釋放內存。垃圾回收?
除了這些還有其他的嗎?當然是肯定的。還有一些偽類型:
???????? mixed
?????????? mixed 說明一個參數可以接受多種不同的(但并不必須是所有的)類型。
?????????? 例如 gettype可以接受所有的 PHP 類型,str_replace可以接受字符串和數組。
??????? number
??????????? number 說明一個參數可以是 int或float.
??????? callback
????????? 有些諸如 call_user_function() 或 usort() 的函數接受用戶自定義的函數作為一個參數。Callback 函數不僅可以是一個簡單的函數,它還可以是一個對象的方法,包括靜態類的方法。
2 .一種語言對于數據類型,有強類型和弱類型之分,PHP屬于哪一種呢?
???????????? PHP是弱類型的。在PHP里,變量的類型是賦給它們的值決定的。如果賦的值是整型,那么變量就是整型,如果是字符串,就是字符串型。看如下代碼:<?php
?$name="your?name";//name位string類型。
?$total=12;????????//total為整型
?> ??????????? 那么如何轉型呢,我覺得和C# 差不多的。就不贅述了。
???????
總結
以上是生活随笔為你收集整理的PHP 6:PHP 基本数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 与afreez一起学习DirectFB之
- 下一篇: 去了趟afei那里