PHP的垃圾回收机制(GC机制)
官方说明 http://docs.php.net/manual/zh/features.gc.refcounting-basics.php
PHP可以自动进行内存管理,清除不再需要的对象。PHP使用了引用计数这种单纯的垃圾回收机制。每个对象都内含一个引用计数器,每多一个reference链接到对象,计数器加1,当reference离开生存空间或者被设为null,计数器减1,当某个引用计数器的对象为0时,PHP知道你将不再需要使用这个对象,释放其所占有的内存空间。
1.PHP 语法错误 和 语义错误 的区别:
语法错误 通过IDE都可以提示看到:如缺少分号,未声明的变量,不匹配的括号或大括号,和未终止字符串;
语义错误 一般是逻辑上的错误,例如:除以0。
2.函数名不区分大小写,变量区分大小写。
3.检测变量类型:is_bool(),is_string(),is_float(),is_array(),is_object()。
4.检测是否存在:file_exists(),class_exists(),property_exists()
5.将stdclass object转换为数组:get_object_vars(_SESSION[user]=1;ob_end_flush();
9.使用empty(),对于""、0、"0"、NULL、FALSE、array() 都认为是空的。
10.parse_url : 解析URL,返回其组成部分
11.http_build_query() : 生成 url_encode 之后的请求字符串
12.usleep 微秒,sleep 秒:sleep(2) = 2秒。
13.获取图片尺寸:getimagesize("1.jpg");
14.页面js调试:console.info(“输出info”); console.warn(“输出警告”); console.error(“输出错误”);
15.PHP中的错误级别:Deprecated/Notice/Warning/Fatal error/Parse error(最高级别的错误,语法解析错误);
16.屏蔽错误输出:error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_WARNING);
17.代码调试:debug_backtrace(); 实参个数:func_num_args(); 返回某一个实参:func_get_args();
18.将数组结果以字符串的形式输出(可以直接将数组的结果以字符串的形式写入日志):
echo print_r(arr,1);
1.七种布尔false:0,0.0,'','0',false,array(),NULL。注意,字符串的'false'的布尔值是 true
2.遍历数组的三种方式和区别:
(1)for循环:只能遍历数字索引。
(2)foreach循环:可以遍历数字索引和关联索引,并且会对数组进行reset()操作
(3)while、list()、each()组合循环:可以遍历数字索引和关联索引,但是不会对数组进行reset()操作
3.continue 2 表示跳出外面第2层循环,其他数字同理。
4.全局变量:把外部的全局变量用于函数内部,在内部的变量使用global GLOBALS['a']
5.静态变量:仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不会消失(不会释放内存),使用 static $a
说明:仅初始化一次;初始化时需要赋值;每次执行函数该值会保留; static修饰的变量是局部的,仅在函数内部有效;
可以记录函数的调用次数,从而可以在某些条件下终止递归。
isset和empty
isset用来判断变量是否存在;empty用来判断变量是否有值。
a = null 两种情况在isset看来为true,其余为false(包括a = null, 0, false, ‘ ’, 或不存在时在empty看来为true,其余为false。
获取对象属性 get_object_vars
注意: get_class_vars 获取的属性的值是初始化的默认值,不是运行过程中,更改的值。
get the classname without the namespace
function get_class_name($classname)
{
if ($pos = strrpos($classname, '\\')) return substr($classname, $pos + 1);
return $pos;
}
(1)判断一个对象是否是某个类的实例,(2)判断一个对象是否实现了某个接口。
instanceof
网友评论