1、字符串类型数字转数字类型

$str = '123';//方法一(int)$str;//方法二intval($str);//方法三+$str;

方法一和方法二是强制转换,即使字符串数字后含有字母。方法三则必须保证是纯数字字符串,否则报错。

推荐:《php培训》

2、数组添加元素

$arr = ['a'];//方法一array_push($arr,'b', 'c');//方法二$arr[] = 'd';

1、如果是压入一个元素,使用方法二效率高,因为可以节省调用函数的额外负担。

2、如果同时压入多个元素,使用array_push效率高,因为不用重复获取文件尾的指针。

3、for循环

//正常写法for($i = 0; $i < count($arr); $i++){//}//优化一for($i = 0, $len = count($arr); $i < $len; $i++){//}//优化二for($i = count($arr) - 1; $i > -1; --$i){//}

优化一:这个问题在于条件判断每次都要计算数组的长度,不如一开始声明一个变量存入。其他语言for循环大概同理吧…

优化二:在不需要从小到大的情况下,可以节省一个$len变量。还有就是--$i比$i--要快这个小优化。

总结:也不是说优化二就一定好,我只是想到这个写了出来。不过一个好的for循环我觉得起码还是要注意到优化一这个的,另外$i++可以改成++$i嘛!

4、foreach遍历

//写法一foreach($arr as $k => $v){//}//写法二foreach($arr as $v){//}//写法三foreach($arr as &$v){//}//写法四$arr = [[1,2,3],[4,5,6]];foreach($arr as list($a,$b,$c)){//}

1.首先你要知道一个事儿,写法一和写法二里$v是不取址的,$v是键值的拷贝。所以别在foreach里更改数组/对象本身,没有用。

2.不需要键名或者索引的时候,别写$k这个事没啥好说的。

3.关于写法三取址引用赋值这个,好处是在当值很大的时候节省空间。但是要注意的是,无论哪种写法,$v在foreach循环之后都会保留,这个时候如果你是取址的写法,那么再次使用$v可就坏事了,手册是建议unset($v)。

4.写法四是针对于二维数组/对象的应用,使用list对键值数组进行解包。注意list内接收的变量数多于实际二维数组内的长度会报错,少于可以只是接收不到,所以要使用时还是要考量一下。

5、关于null判断

//写法一is_null($a);//写法二$a === null

两种写法写法效果是完全一样的,使用方法二节省函数调用。
另外能用===就别用==了。

6、多个判断

$a = 1;//写法一if($a === 0){//}elseif($a === 1){//}else{//}//写法二do{if($a === 0){//break;}if($a === 1){//break;}//}while(false);//写法三switch(true){case 0://break;case 1://break;default://}

7、list妙用

//妙用一list($a,$b) = [$b,$a];//妙用二list(,$fn) = explode('_','Api_deleteUser');

8、英文字符串长度超限

//一般方式strlen($str) > 10;//优化方式isset($str[10]);

isset是PHP语句,strlen是函数。

9、null判断赋值几种写法

//当$a不为null时$b = $a,否则$b = 233333。//方式一$b = $a or $b = 233333;//方式二$b = $a ? $a : 23333;//方式三$b = $a ?: 233333;//方式四,PHP7$b = $a ?? 233333;

注意区分方式三和方式四的区别,明确自己到底想判断啥。除了方式四,其他三种还可以判断false,'','0',0,[]的情况。

10、两个变量交换

//方式一:比较清晰,有变量产生$temp = $a;$a = $b;$b = $temp;//方法二:比较清晰,但也会产生临时变量list($b, $a) = [$a,$b];//方式三:在整数运算时互逆运算比较靠谱,但+ – * /可能精度丢失或溢出$a = $a + $b;$b = $a - $b;$a = $a - $b;

11、避免使用递归

//递归function fibonacci($n){if($n == 0 || $n == 1){return 1;}return fibonacci($n - 1) + fibonacci($n - 2);}//非递归function fibonacci($n){$arr = [1,1];for($i = 2; $i < $n + 1; ++$i){$arr[] = $arr[$i - 1] + $arr[$i - 2];}return $arr[$n];}

12、不要省略if后的大括号

//写法一if($a === null) $a = 1;//写法二if($a === null)$a = 1;//写法三if($a === null){$a = 1;}//如果可以避免写if更好$a = $a ?? 1;

13、使用$_SERVER[‘REQUEST_TIME’]代替time().

后者会引来一次函数调用, 而如果对时间的精确值要求不高,前者快很多.

14、少用/不用continue

continue是回到循环的头部, 而循环结束本来就是回到循环的头部, 所以通过适当的构造, 我们完全可以避免使用这条语句, 使得效率得到改善.

15、变量先定义后使用

使用一个未定义的变量, 比使用一个定义好的变量要慢8倍以上!

PHP引擎会首先按照正常的逻辑来获取这个变量, 然而这个变量不存在, 所以PHP引擎需要抛出一个NOTICE,进入一段使用未定义变量时应该走的逻辑, 然后返回一个新的变量.

16、关于命名

根据PSR规范,方法须使用小驼峰式。

根据PSR规范,类的命名须为大驼峰式。

变量的命名在规范里没有明确,项目内统一。(下划线式还是易懂一些)

布尔变量尽量使用can、is、has开头。

17、避免使用正则

18、用大括号括起在双引号和heredoc中的变量

更多编程相关内容,请关注php中文网编程教程栏目!

相关推荐:

PHP视频教程,学习地址:https://www.php.cn/course/list/29/type/2.html

更多相关文章

  1. PHP字符串变量介绍
  2. 关于php变量申明和内存中的存放方式
  3. 详解PHP死循环写法和作用
  4. PHP让人不知道的匿名函数的几种写法(附代码)
  5. php中的可变变量(代码详解)
  6. 学习PHP死循环写法和作用
  7. 详细解说三种PHP嵌套HTML的写法
  8. 聊聊PHP中的单例模式与静态变量
  9. 几个不常用但特别实用的PHP预定义变量

随机推荐

  1. Android三种方法设置ImageView的图片
  2. Android EventBus3.0 索引
  3. Android监听应用程序安装和卸载
  4. android theme中的各个color的含义
  5. android tp多点触摸
  6. Android下rtc驱动调用流程
  7. 安卓课程十八 RadioButton单选按钮的使用
  8. 【android】通过handle,looper实现多线程
  9. Android(安卓)联系人按中文拼音排序
  10. Android标题栏各种设置