您的位置:首页 > 编程语言 > PHP开发

php的基本数据类型

2012-10-18 16:32 183 查看
PHP 支持8种基本的数据类型。

四种标量类型:

boolean (布尔型)

integer (整型)

float (符点型, 也称作 double)

string (字符串)

两种复合类型:

array (数组)

object (对象)

最后是两种特殊类型:

resource (资源)

NULL (NULL)

使用var_dump()可显示数据类型;

可强制转换数据类型;如 $num = '45'; echo 1 + (int)$num;而实际上PHP是弱类型语言,对于此例可不用强制转换,可以自动进行类型转换。

布尔型:

boolean:取两个值,true/false,不区分大小写。

当转换为 boolean 时,以下值被认为是 FALSE

the 布尔值 FALSE 自身

the 整型值 0 (零)

the 浮点型值 0.0 (零)

空字符串, 以及 字符串 "0"

不包括任何元素的数组

不包括任何成员变量的对象(仅PHP 4.0 适用)

特殊类型 NULL (包括尚未设定的变量)

从没有任何标记(tags)的XML文档生成的SimpleXML 对象

所有其它值都被认为是 TRUE(包括任何资源)。

整型:

整型值可以使用十进制,十六进制或八进制表示,前面可以加上可选的符号(- 或者 +)。八进制表示数字前必须加上 0(零),十六进制表示数字前必须加上 0x。

windows平台下,为有符号的32位,其中符号占据一位,最大值为 2^31 - 1(2147483647),可以用常量PHP_INT_MAX 表示;若溢出将被自动转换为浮点型;

如果向八进制数传递了一个非法数字(即 8 或 9),则后面其余数字会被忽略。

<?php
var_dump(011090);  // int 72


浮点型:

PHP不区分float与double;而且会有某些精度的丢失;

Strings:

字符串有四种声明方式:

单引号:'','My test';

双引号:"","PHP字符串";

heredoc:

<<< EOF
HP不区分float与double;而且会有某些精度的丢失少的呢个就

EOF


  其中,EOF,是一个标记符,可以自定义,但习惯应避开关键字,标记符大小写敏感;而且 第一个 EOF 也可以加上双引号;第二个标记必须出现在新的行首。

heredoc可以识别变量以及单、双引号中的转义符,但不对双引号转义;

$name = 'Tim';
$tester = <<<EOAW
$name saied:"It's  my book!\n"
"test"
'It's  my book!\n'
over
EOAW;
echo $tester;
  输出为:Tim saied:"It's my book! " "test" 'It's my book! ' over


nowdoc:将heredoc的标记加为单引号或将双引号标记替换为单引号即为nowdoc风格;nowdoc能够实现真正的所见即所得;

$name = 'Tim';
$tester = <<<'EOAW'
$name saied:"It's  my book!\n"
"test"
'It's  my book!\n'
over
EOAW;
echo $tester;
输出为:
$name saied:"It's my book!\n" "test" 'It's my book!\n' over  



字符串是一种特殊的数组;

数组:

PHP 中的 数组 实际上是一个有序映射。映射是一种把 values 关联到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组,或列表(向量),散列表(是映射的一种实现),字典,集合,栈,队列以及更多可能性。数组元素的值也可以是另一个数组。树形结构和多维数组也是允许的。

可以使用array()来定义数组:

$arr = '新疆特产';
$fruits = array('0' => 'apple',
1   => 'orange',
2   => 'pear',
true=> '葡萄',
false=> '橙子',
4.5 => '西瓜',
NULL => '不知道',
-6 => '杏',
$arr => '哈密瓜',
);
print_r($fruits);

输出:
Array ( [0] => 橙子 [1] => 葡萄 [2] => pear [4] => 西瓜 [] => 不知道 [-6] => 杏 [新疆特产] => 哈密瓜 )


// 键(key) 可是是一个 整数(integer) 或 字符串(string),key中的浮点型将被取整为integer;
//使用 TRUE 作为键名将使 integer 1 成为键名。使用 FALSE 作为键名将使 integer 0 成为键名。使用 NULL 作为键名将等同于使用空字符串。使用空字符串作为键名将新建(或覆盖)一个用空字符串作为键名的值,这和用空的方括号不一样。

// 值(value) 可以是任意类型的值


不能用数组和对象作为键(key)。这样做会导致一个警告:Illegal offset type。 


//定义数组
$arr = array('新疆特产');
$fruits = array('0' => 'apple',
1   => 'orange',
2   => 'pear',
true=> '葡萄',
false=> '橙子',
4.5 => '西瓜',
NULL => '不知道',
-6 => '杏',
$arr => '哈密瓜',
);
print_r($fruits);
输出:
( ! ) Warning: Illegal offset type in ……index.php on line 74
Call Stack
#    Time    Memory    Function    Location
1    0.0006    347864    {main}( )    ..\index.php:0
Array ( [0] => 橙子 [1] => 葡萄 [2] => pear [4] => 西瓜 [] => 不知道 [-6] => 杏 )


对象:

资源类型:

资源是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。

is_resource() 函数测定一个变量是否是资源,函数 get_resource_type() 则返回该资源的类型。

NULL:

特殊的 NULL 值表示一个变量没有值。NULL 类型唯一可能的值就是 NULL

在下列情况下一个变量被认为是 NULL

被赋值为 NULL

尚未被赋值。

被 unset()。

类型强制转换

在要转换的变量之前加上用括号括起来的目标类型。

允许的强制转换有:

(int), (integer) - 转换为 整型(integer)

(bool), (boolean) - 转换为 布尔型(boolean)

(float), (double), (real) - 转换为 浮点型(float)

(string) - 转换为 字符串(string)

(binary) - 转换为二进制 字符串(string) (PHP 6)

(array) - 转换为 数组(array)

(object) - 转换为 对象(object)

(unset) - 转换为 NULL (PHP 5)

(binary) 转换会在结果前面加上前缀'b',PHP 5.2.1 新增。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: