1 依次输出一数组。每输入3个换一行。
//讲个小细节,有人说 $i< sizeof($len) 每次循环时都要去计算下数组长度,是否很浪费性能。 -----回答: 1 你观察很细。 2 现在的解释器比较智能,这个问题会被自动优化处理。
for($i ?= 0; $i<sizeof($len); $i++){ ????if( $i && $i%3==0) echo "<br>"; ??echo $arr[$i];}
2 字符串不允许出现特殊字符。
???????$chinese= "\x{4e00}-\x{9fa5}";//中文匹配 ???????$pattern="/^[a-zA-Z0-9($chinese)]+$/u";//加上英文、数字匹配 ???????if(!preg_match($pattern,$nick_name)) { ???????????????exit("不允许特殊字符"); ???????}
3 支付utf-8 的 strlen 和 substr 函数。 (求utf-8 字符串长度,求utf-8 的子字符串 )
??//utf-8 求utf-8 字符串长度 ??function ?strlen_utf8($str) ??{ ???????$i = 0; ???????$count = 0; ???????$len = strlen($str); ???????while ($i < $len) { ???????????$chr = ord($str[$i]); ???????????$count++; ???????????$i++; ???????????if ($i >= $len) ???????????????break; ???????????if ($chr & 0x80) { ???????????????$chr <<= 1; ???????????????while ($chr & 0x80) { ???????????????????$i++; ???????????????????$chr <<= 1; ???????????????} ???????????} ???????} ???????return $count; ???} ??//求utf-8 子字符串。 ??????function ?subStringUtf8($str, $start, $lenth) { ???????$len = strlen($str); ???????$r = array(); ???????$n = 0; ???????$m = 0; ???????for ($i = 0; $i < $len; $i++) { ???????????$x = substr($str, $i, 1); ???????????$a = base_convert(ord($x), 10, 2); ???????????$a = substr(‘00000000‘ . $a, -8); ???????????if ($n < $start) { ???????????????if (substr($a, 0, 1) == 0) { ???????????????} elseif (substr($a, 0, 3) == 110) { ???????????????????$i += 1; ???????????????} elseif (substr($a, 0, 4) == 1110) { ???????????????????$i += 2; ???????????????} ???????????????$n++; ???????????} else { ???????????????if (substr($a, 0, 1) == 0) { ???????????????????$r[] = substr($str, $i, 1); ???????????????} elseif (substr($a, 0, 3) == 110) { ???????????????????$r[] = substr($str, $i, 2); ???????????????????$i += 1; ???????????????} elseif (substr($a, 0, 4) == 1110) { ???????????????????$r[] = substr($str, $i, 3); ???????????????????$i += 2; ???????????????} else { ???????????????????$r[] = ‘‘; ???????????????} ???????????????if (++$m >= $lenth) { ???????????????????break; ???????????????} ???????????} ???????} ???????return join("", $r); ???} ???
4 小数位减法时,容易丢失精度,使用数学函数。
$sum = ?bcadd($a , $b , 4); ?// a+b 保留4位小数。$diff ?= bcsub( $a , $b ?, 4); // a- b 保留4位小数。$mul = bcmul($a , $b , 4); ???//a*b 保留4位小数。$div = bcdiv($a , $b , 4); ???//a/b 保留4位小数 ?b 不能为0.
5 使用事务。(不同框架代码不一样,这里以Yii 为例)
$trans = Yii::app()->db->beginTransaction(); ?//创建事务。 $trans->commit(); ??//事务提交 $trans->rollback(); ??//事务回滚
6 异常处理。 (生产环境中,不希望对外暴露错误,以及程序执行意外时,数据库回滚处理。)
??????try { ???????????$trans = Yii::app()->db->beginTransaction(); ???????????//... 中间的执行代码 ???????????$trans->commit(); ?//事务提交 ???????} catch (Exception $e) { ???????????log($e->getMessage()); ?//日志记录异常信息 ???????????$trans->rollback(); ?//事务回滚 ???????}
php 实战常用代码示例
原文地址:https://www.cnblogs.com/babytuo/p/8986400.html