PHP|变量的类型及转化+常量(超级全)

PHP 支持八种原始类型 --- var_dump( )。
四种标量类型:
布尔型(boolean)
整型(integer)
浮点型(float)(浮点数,也作double)
字符串(String)
两种复合类型: (一个变量存多个值)
数组(Array)
对象(Object)
最后是两种特殊类型:
资源(Resource)
NULL

"; $var = true; var_dump($var); //boolean echo "
"; $var = 10; var_dump($var); //int echo "
"; $var = 10.12; var_dump($var); //float echo "
"; $var = "hello world"; var_dump($var); //string echo "
"; echo "以下是两种复合类型:
"; $var = array("one", "two", "three"); var_dump($var); //array echo "
"; class Demo { var $one = 10; var $two = 20; var $three = 30; } $var = new Demo; var_dump($var); //object echo "
"; echo "以下输出两种特殊的类型:
"; $var = mysql_connect("localhost", "root", ""); var_dump($var); //object echo "
"; $var = null; var_dump($var); //object echo "
";


PHP|变量的类型及转化+常量(超级全)
文章图片

bool 类型:
允许if($bool){}
假值只有以下几种:
boolean false int:0 float:0.0 string: "" "0" array()空串 object:无单元对象(PHP4)null


整型与浮点型:
PHP不支持无符号,溢出转float 不区分double float 不能用==判等


字符串的定义
string是一系列字符。在 PHP 中,字符和字节一样,也就是说,一共有 256 种不同字符的可能性。这也暗示 PHP 对 Unicode 没有本地支持。

注: 一个字符串变得非常巨大也没有问题,PHP 没有给字符串的大小强加实现范围,所以完全没有理由担心长字符串。

单引号:指定一个简单字符串的最简单的方法是用单引号(字符 ')括起来。
要表示一个单引号,需要用反斜线(\)转义,和很多其它语言一样。如果在单引号之前或字符串结尾需要出现一个反斜线,需要用两个反斜线表示。注意如果试图转义任何其它字符,反斜线本身也会被显示出来!所以通常不需要转义反斜线本身。
注: 单引号字符串中出现的变量不会被变量的值替代
双引号:如果用双引号(")括起字符串,PHP 懂得更多特殊字符的转义序列:
注:双引号字符串最重要一点是其中的变量名会被变量值替代。此外,如果试图转义任何其它字符,反斜线本身也会被显示出来!
定界符:另一种给字符串定界的方法使用定界符语法(“<<<”)。应该在 <<< 之后提供一个标识符,然后是字符串,然后是同样的标识符结束字符串。
定界符中标识符的命名规则与变量的命名规则一样。只能包含字母数字下划线,而且必须以下划线或非数字字符开始。
注:结束标识符所在的行不能包含任何其它字符,可能除了一个分号(; )之外。这尤其意味着该结束标识符不能被缩进,而且在分号之前和之后都不能有任何空格或制表符。如果破坏了这条规则使得结束标识符不“干净”,则它不会被视为结束标识符,PHP 将继续寻找下去。如果在这种情况下找不到合适的结束标识符,将会导致一个在脚本最后一行出现的语法错误。
不能用定界符语法初始化类成员。用其它字符串语法替代。
定界符文本的表现和双引号字符串一样,只是没有双引号
PHP的其它数据类型

  • 数组(Array)(不同于狭义上的数组):PHP 中的数组实际上是一个有序图。图是一种把 values 映射到 keys 的类型。此类型在很多方面做了优化,因此可以把它当成真正的数组来使用,或列表(矢量),散列表(是图的一种实现),字典,集合,栈,队列以及更多可能性。因为可以用另一个 PHP 数组作为值,也可以很容易地模拟树。本书将用一章介绍数组的声明与使用,这里仅作简要说明。 PHP中可以使用多种方式构建一个数组,在这里我们只用array()语言结构来新建一个array。它接受一定数量用逗号分隔的 key => value 参数对。语法结构:array( [key =>] value , ... )
    // key 可以是integer或者string类型
    // value 可以是任何值
    "bar", 12 => true); ?>


  • 对象(Object):在PHP中,对象和数组一样都是一种复合数据类型。但对象是一种更高级的数据类型。一个对象类型的变量,是由一组属性值和一组方法构成,其中属性表明对象的一种状态,方法通常用来表明对象的功能。本书将用一章的内容来介绍对象的使用,这里仅作简要的说明。要初始化一个对象,用 new 语句将对象实例到一个变量中。
    do_foo(); //通过对象bar调用方法do_foo输出: Doing foo. ?>



  • 资源类型(Resource):资源是一种特殊变量,保存了到外部资源的一个引用。资源是通过专门的函数来建立和使用的。
    由于资源类型变量保存有为打开文件、数据库连接、图形画布区域等的特殊句柄,因此无法将其它类型的值转换为资源
    PHP4Zend引擎引进了资源计数系统,可以自动检测到一个资源不再被引用了(和 Java 一样)。这种情况下此资源使用的所有外部资源都会被垃圾回收系统释放。由此原因,很少需要用某些 free-result 函数来手工释放内存。


  • NULL类型:特殊的 NULL 值表示一个变量没有值。NULL类型唯一可能的值就是NULL,表示一个变量的值为空,NULL不区分大小写。
    在下列情况下一个变量被认为是 NULL: 被赋值为 NULL值的变量;尚未被赋值的变量; 被unset()函数销毁的变量
  • 伪类型介绍:伪类型并不是PHP语言中的基本数据类型,只是因为PHP是弱类型语言,所以在一些函数中,一个参数可以接收多种类型的数据,还可以接收别的函数作为回调函数使用。为了确保代码的易读性在本文中介绍一些伪类型的使用。
    mixed:说明一个参数可以接受多种不同的(但并不必须是所有的)类型。
    number:说明一个参数可以是 integer 或者 float。
    callback:有些诸如 call_user_function() 或 usort() 的函数接受用户自定义的函数作为一个参数。Callback 函数不仅可以是一个简单的函数,它还可以是一个对象的方法,包括静态类的方法
    一个 PHP 函数用函数名字符串来传递。可以传递任何内置的或者用户自定义的函数,除了 array(),echo(),empty(),eval(),exit(),isset(),list(),print() 和 unset()。

数据类型之间相互转换:(作了解) PHP|变量的类型及转化+常量(超级全)
文章图片

强制转化: var_dump();
getType(变量);
1. setType(变量, 类型); ----- 是将原变量给转换(类型写int integar都可以)
2. 在变量使用时,前面加上类型符号,转 ---- 是在赋值时给新变量一个新类型,原变量类型不变
3. intval(), floatval()strval(); 转化成int /float/string


自动转化:
见上图 p.s.Float->int时若上溢则取int 的最大值字符串转化成整型只取开头的连续数字,若字符串开头没有数字,转化失败,返回0


测试函数:
变量类型的测试函数:
is_bool():判断是否是布尔型
is_int()、is_integer()和is_long():判断是否为整型。
is_float()、is_double()和is_real():判断是否为浮点型
is_string():判断是否为字符串
is_array():判断是否为数组
is_object():判断是否为对象
is_resource():判断是否为资源类型
is_null():判断是否为null
is_scalar():判断是否为标量
is_numberic():判断是否是任何类型的数字和数字字符串
is_callable():判断是否是有效的函数名
函数:bool settype ( mixed var, string type ) 是将变量 var 的类型设置成 type。



常量
常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间一个常量一旦被定义,就不能再改变或取消定义。常量默认为大小写敏感。按照惯例常量标识符总是大写的。
常量名和其它任何 PHP 标签遵循同样的命名规则。合法的常量名以字母或下划线开始,后面跟着任何字母,数字或下划线。
常量的范围是全局的。不用管作用域就可以在脚本的任何地方访问常量。
我们可以用 define() 函数来定义常量。

常量: 一旦声明, 这个常量的值就 不会被改变
* 1. 常量是使用函数 define()声明的
* 2. 如果常量没有声明, 则常量名在使用时, 会自动转为字符串(效率很低)
* 3. 常量名称,不要加 $符号
* 4. 常量名称,默认是区分大小写的one two threeONETWOTHREE, 习惯上常量名称要全部大写
* 5. 可以使用define()第三个参数来决定是否让这个常量名称区分大小写 true false默认false是区分
* 6. 常量的值只支持标量数据类型
* 7 . 常量不能使用 unset() 清除一个常量
* 8. 可以使用defined(); 判断一个常量是否存在

$root = "localhost"; define("ROOT", 10, true); if(defined("ROOT")) { echo ROOT+10; }else{ echo "11111111111"; } echo constant("ROOT"); echo ROOT; echo '
'; var_dump(get_defined_constants()); //用来获取已定义的常量列表




魔术常量:虽然是常量 但是在不同地方出现代表值不同
PHP|变量的类型及转化+常量(超级全)
文章图片


test();




【PHP|变量的类型及转化+常量(超级全)】
p.s。都过去20天了,才学到这里

    推荐阅读