php的数据类型
- php支持8种基本数据类型(和Java一样)
- 支持2中特殊类型:resource(资源)null(无类型)
- php支持的伪类型:mixed(混合类型) number(数字类型)callback(回调类型)
伪类型与变量
- mixed,比如gettype()可以接收所有的PHP类型,str_replace()可以接收字符串和数组
- number:说明参数可以是integer或者是float
- callback:回调类型,在php5.4引入callable类型之前使用了callback伪类型。2者的意义是完全相同的
- 伪变量 $...:个人觉得这个太6了,在函数原型中 $... 表示等等的意思,表示该函数可以接收任意个参数(多少个参数都可以,真的就是省略号...)
- php是支持强制转换的:引入一个和Java相差很多的概念,php在定义变量的时候不支持(或者是不建议明确的类型定义),如果把一个String值赋值给$var,$var的类型就是String型;如果又把integer赋值给$var,$var就成了integer。(变量类型是根据使用该变量的上下文决定的)
object对象
- 要创建一个新的对象object,使用new关键字初识化。
<?php
/**
* new 实例化对象
* -> 执行类中的方法
*/
class foo
{
function do_foo(){
echo "doing foo";
}
}
$bar = new foo;
$bar->do_foo();
?>
- 对象转换成对象,无变化
- 其他类型的值转化为对象,会创建一个内置类stdClass实例,如果该值为NULL,则新的实例为空。
- 数组转化成对象将使键名成为其属性名并具体相应的值
- 对于任何其他的值,名为scalar的成员变量将包含该值。
<?php
$obj = (object)'fhasfjdas';
echo $obj->scalar;
?>
Resource资源类型
- 概念:保存了一个到外部资源的引用。资源是通过专门的函数来创建和使用的。
- get_resource_type() 返回资源的类型
<?php
$c = mysql_connect();
echo get_resource_type($c)."\n";
// 打印:mysql link
$fp = fopen("foo","w");
echo get_resource_type($fp)."\n";
// 打印:file
$doc = new_xmldoc("1.0");
echo get_resource_type($doc->doc)."\n";
// 打印:domxml document
?>
- 关于资源的转化和释放:php不建议将其他对象转化为资源,因为没有意义。php资源的释放像Java一样,程序会检测资源不再被外部引用,就会被垃圾回收机制释放回收掉,基本不需要人为释放资源。
NULL
- 变量会认为是null的情景:被赋值为null;尚未被赋值;被unset()
unset
- 如果用unset()销毁一个全局变量,则只是局部变量被销毁,在调用环境中的变量将保持调用unset()之前一样的值
- 在函数中unset()一个全局变量,需要用到$GLOBALS数组来实现。
- 如果在函数中 unset() 一个通过引用传递的变量,则只是局部变量被销毁,而在调用环境中的变量将保持调用 unset() 之前一样的值。
- 注意:使用(unset)$var将一个变量转化为null,不会删除该变量或者unset()其值。仅是返回null值
函数的作用
- value_dump():查看表达式的值和类型
- gettype():返回一个通俗易懂的表达式,方便调试
- istype():查看类型
- settype():改变一个变量的类型
- var_dump():打印变量的相关信息,
- eval(): 把字符串作为PHP代码执行
- isset():检查变量是否可以设置
- strlen():字符串长度
- strpos():字符串所在的位置
小结
有不对或者不准确的地方欢迎大家纠正