一、字符串相关
1.str_replace
$str = '某人的栖息地 --- www.ooso.net';
$str = str_replace('某人', '坏人', $str);
$str = str_replace('的', 'di', $str);
$str = str_replace('栖息地', '猪窝窝', $str);
$str = str_replace('www.ooso.net', 'ooso.net', $str);
以上,替换了4次字符串,实际只要换个写法,一行就搞定了:
$str = '某人的栖息地 --- www.ooso.net';
$str = str_replace(array('某人', '的', '栖息地', 'www.ooso.net'), array('坏人', 'di', '猪窝窝', 'ooso.net'), $str);
二、lamda函数
三、类型转换
$intVar = (int)$_POST['post_var'];
再比如数组,有时候写键值要打引号是不是很不爽啊,我们可以把它转换成object,比如:
$arr = array('name' => 'volcano', 'sex' => 'male');
$arr = (object)$arr;
echo $arr->name;
echo $arr->sex;
四、运算符
1.压抑运算符
错误压抑运算符(在 PHP 手册中称為「错误控制运算符」)是指「@」符号,当它出现在一句 PHP 表达式前面,意思就是不论表达式发生任何错误都不要显示出来,这是非常方便的,尤其是当你不知道程式码什麼时候会发生错误,希望有关的错误讯息不会在用户面前出现。
然而,很多程序员经常错误地使用这个错误压抑运算符,「@」运算符相当缓慢,并且销耗颇多资源,对系统的效能有负面影响。Michel Fortin 有一些很好的例子示范如何用替代方法迴避「@」运算符,以下是他使用 isset 替代错误压抑运算符的范例:
if (isset($albus)) $albert = $albus; else $albert = NULL; |
相当于:
$albert = @$albus; |
第二种形式虽然比较简单,但它的执行速度却比第一种慢两倍,一个更好的解决方法是透过参考来指定变量,不会引致任何错误讯息,像这样:
$albert =& $albus; |
必须注意这些变化都有某些副作用,只能应用在有极高效能要求的场合中使用。比如后续改变$albus会改变$albert
五、引用
1.正确使用引用
<?php
$a['b']['c'] = array();
// slow 2 extra hash lookups per access
for ($i = 0; $i < 5; ++$i)
$a['b']['c'][$i] = $i;
// much faster reference based approach
$ref =& $a['b']['c'];
for ($i = 0; $i < 5; ++$i)
$ref[$i] = $i;
?>
2.引用后不回收
在foreach
循环中,如果我们需要更改迭代的元素或是为了提高效率,运用引用是一个好办法:
- $arr = array(1, 2, 3, 4);
- foreach ($arr as &$value) {
- $value = $value * 2;
- }
- // $arr is now array(2, 4, 6, 8)
这里有个问题很多人会迷糊。循环结束后,$value
并未销毁,$value
其实是数组中最后一个元素的引用