title: PHP数据类型
date: 2018-5-18
categories:php
PHP 有8种数据类型:html
函数 | 检测类型 | 举例 |
---|---|---|
is_bool | 检测变量是不是布尔类型 | is_bool(true),is_bool(false) |
is_string | 检测变量是不是字符串类型 | is_string('string'),is_string(1234) |
is_integer/is_int | 检测变量是否为整数 | is_integer(34),is_integer('34') |
is_float/is_double | 检测变量是否为浮点类型 | is_float(3.1415),is_float('3.1415') |
is_array | 检测变量是否为数组类型 | is_array($arr) |
is_object | 检测变量是不是一个对象类型 | is_object($obj) |
is_null | 检测变量是否为null | is_null(null) |
is_numeric | 检测变量是否为数字或数字组成的字符串 | is_numeric('5'),is_numeric('bccd110' |
在 PHP 中,用 definie() 函数来定义,基本格式:
define( $'变量名',常量表示的值,是否对大写敏感(可选参数,bool值));
数组
例如:函数
<?php header("Content-type:text/html;charset=utf-8"); define('MY_NAME', '沫沫'); define('MY_AGE', '20'); define('MY_HOBBY', '看小说睡懒觉'); echo '本府'.MY_NAME.',年芳'.MY_AGE.',尤好'.MY_HOBBY.'。'; function useConst(){ echo '<p>函数名字叫:'.`__FUNCTION`__; } echo '<p>这是第'.__LINE__.'行'; echo '<p>本文件的绝对路径为:'.__FILE__; useConst(); ?>
名称 | 说明 |
---|---|
__LINE__ |
文件中的当前行号。 |
__FILE__ |
文件的完整路径和文件名。若是用在被包含文件中,则返回被包含的文件名。自 PHP 4.0.2 起,__FILE__ 老是包含一个绝对路径(若是是符号链接,则是解析后的绝对路径),而在此以前的版本有时会包含一个相对路径。 |
__DIR__ |
文件所在的目录。若是用在被包括文件中,则返回被包括的文件所在的目录。它等价于 dirname(__FILE__) 。除非是根目录,不然目录中名不包括末尾的斜杠。(PHP 5.3.0中新增) |
__FUNCTION__ |
函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值老是小写字母的。 |
__CLASS__ |
类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值老是小写字母的。类名包括其被声明的做用区域 |
__TRAIT__ |
Trait 的名字(PHP 5.4.0 新加)。自 PHP 5.4 起此常量返回 trait 被定义时的名字(区分大小写)。Trait 名包括其被声明的做用区域。 |
__METHOD__ |
类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。 |
__NAMESPACE__ |
当前命名空间的名称(区分大小写)。此常量是在编译时定义的(PHP 5.3.0 新增)。 |
PHP中布尔值 true 和 false 不区分大小写。
如下值被认为是 false:学习
单、双引号
双引号中所包含的变量会自动被替换长实际数值。
单引号中包含的变量则会按普通字符输出。code
转义字符htm
HereDoc
注意:结尾的标识符前面不能有空格。对象
varry(value1, value2, ......)
或utf-8
varry(key1 => value1, key2 => value2, ......)
$my_array[key1] = value1; $my_array[key2] = value2; ......
不区分大小写。资源
知足如下条件之一时,变量的值为NULL:
强转类型 | 功能描述 |
---|---|
(boolean) | 强转为Boolean类型 |
(string) | 强转为字符串类型 |
(integer) | 强转为整型 |
(float) | 强转为浮点型 |
(array) | 强转为数组 |
(object) | 强转为对象 |
看下面的代码,能够说你绝对不可能说出正确的答案。
<?php echo (int) 123.999999999999999; echo (int) -1.999999999999999; echo (int) -1.9999999999999999; echo (int) -0.99999999999999999; echo (int) -10.999999999999999; echo (int) -1000.9999999999999; echo (int) -9999999999; ?>
下面来看看我获得的结果。
首先要说明下个人系统环境:Windows10 64位
获得的结果以下
124 -1 -2 -1 -10 -1000 -1410065407
官方给出的说法是: 当从浮点数转换成整数时,将向零取整。
若是浮点数超出了整数范围(一般为 +/- 2.15e+9 = 2^31),则结果不肯定,由于没有足够的精度使浮点数给出一个确切的整数结果。在此状况下没有警告,甚至没有任何通知!
那么,咱们来看下面的这个例子。
echo (int) ( (0.1+0.7) * 10 );
不用猜了,这里的执行结果是---7!
对,你没看错,我也没敲错,结果是 7 ,而不是咱们一般认为的 8 。
PHP官方有这么一句警告: 决不要将未知的分数强制转换为 integer,这样有时会致使不可预料的结果。
因此在进行强制类型转换的时候必定要慎重!大数值,高精度,分数都要慎用!
固然,上面的那个例子能够这样来处理。
<?php $num = (0.1 + 0.7) * 10; echo (int) $num; //输出7 (int)$num2 = (0.1 + 0.7) * 10; echo $num2; //输出8 ?>
<?php header("Content-type:text/html;charset=utf-8"); $a = '今年是'; $b = 2018; $c = '年。'; $d = $a.$b.$c; echo $d; $e = '请叫我'; $f = '小沫'; $g = "{$e}{$f}"; echo $g; ?>