PHP 6:PHP 基本数据类型
本章将介绍PHP基本类型。
相信我们已经熟悉了C/C++,C#或者Java里的任意一种语言。本章会以C#为比较语言。
OK,如果你想学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 }
逐一讨论吧。
相信我们已经熟悉了C/C++,C#或者Java里的任意一种语言。本章会以C#为比较语言。
OK,如果你想学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 }
- PHP有哪几种数据类型,它们和其他语言有什么区别呢?
其中包括4种标量类型:
同时包括2种复合类型:
- Integer
- Float
- String
- Boolean
但是还有2种特殊的类型:
- Array
- Object
写到此,你可能心里开始犯嘀咕:那么它们是在程序里面怎么表示呢?好的,让我们先看看前面6种数据类型吧。还有2种类型后面解释。
- NULL
- Resource
其实上面的和C# 没有多大区别,这里不多说了。
- 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请记住一点:key 可以是整型或者字符串。如果键名是一个整型的标准表达方法,取整,如果是float型,转化为整型。与之对比,值则可以为任何值。
$arr = array("Hello" => "Word", 12 => true);
echo $arr["Hello"]; // bar
echo $arr[12]; // 1
?>
如果你想实现多维数组怎么办?在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怎么样,基本上了解了Array了吧。
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 ?>
至于Object嘛,感觉和C#里的没什么区别。
NULL 对象就有意思了,这个在C# 里是没有的,C#倒是有个null。
特殊的 NULL 值表示一个变量没有值,NULL 类型唯一可能的值就是 NULL。注意了 NULL 类型是 PHP 4 引进的。
在下列情况下一个变量被认为是 NULL:
简单吧,原来把C#里的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
$name="your name";//name位string类型。
$total=12; //total为整型
?>
那么如何转型呢,我觉得和C# 差不多的。就不赘述了。$name="your name";//name位string类型。
$total=12; //total为整型
?>