一、记录mysql存json时文字乱码的问题
- 有时候我们的json_encode 存入数据库中乱码 有个参数可以很好的解决这个问题
- 就是JSON_UNESCAPED_UNICODE这个参数, json_encode($text,JSON_UNESCAPED_UNICODE) 这样就不会乱码了
二 记录常用打印方法
function p($data){
// 定义样式
$str='<pre style="display: block;padding: 9.5px;margin: 44px 0 0 0;font-size: 13px;line-height: 1.42857;color: #333;word-break: break-all;word-wrap: break-word;background-color: #F5F5F5;border: 1px solid #CCC;border-radius: 4px;">';
// 如果是boolean或者null直接显示文字;否则print
if (is_bool($data)) {
$show_data=$data ? 'true' : 'false';
}elseif (is_null($data)) {
$show_data='null';
}else{
$show_data=print_r($data,true);
}
$str.=$show_data;
$str.='</pre>';
echo $str;
}
三、富文本内容替换(强制替换)
//把所有src里面的路径替换成你对应的域名
function replacePicUrl($content = null, $strUrl = null){
$content= preg_replace('/src="\//', 'src="'."$strUrl".'/', $content);
return $content;
}
四、根据生日计算年龄
//计算年龄
function birthday($birthday){
$age = strtotime($birthday);
if($age === false){
return 0;
}
list($y1,$m1,$d1) = explode("-",date("Y-m-d",$age));
$now = strtotime("now");
list($y2,$m2,$d2) = explode("-",date("Y-m-d",$now));
$age = $y2 - $y1;
if((int)($m2.$d2) < (int)($m1.$d1))
$age -= 1;
return $age;
}
五、时间转换
//时间转换
function GEtTime($time){
if(is_numeric($time)){
$value = array(
"years" => 0, "days" => 0, "hours" => 0,
"minutes" => 0, "seconds" => 0,
);
if($time >= 31556926){
$value["years"] = floor($time/31556926);
$time = ($time%31556926);
}
if($time >= 86400){
$value["days"] = floor($time/86400);
$time = ($time%86400);
}
if($time >= 3600){
$value["hours"] = floor($time/3600);
$time = ($time%3600);
}
if($time >= 60){
$value["minutes"] = floor($time/60);
$time = ($time%60);
}
$value["seconds"] = floor($time);
$y=$t=$h=$m=$s='';
if ($value["years"]>0){
$y=$value["years"]."年";
}
if ($value["days"]>0){
$t=$value["days"]."天";
}
if ($value["hours"]>0){
$h=$value["hours"]."小时";
}
if ($value["minutes"]>0){
$m=$value["minutes"]."分";
}
if ($value["seconds"]>0){
$s=$value["seconds"]."秒";
}
$time2=$y.$t.$h.$m.$s;
return $time2;
}else{
return '时间格式不正确';
}
}
六、记录php基础问题
1.isset()和empty()的区别
isset函数是检测变量是否定义;只要变量定义了 他都会返回true;不管变量设置的是什么;而且它只检测$a b这种的 如果 传字符串 true,false,布尔值等都会被抛出异常
empty函数是检测变量是否存在;存在则返回true;不存在返回fasle.
注意empty有几种特殊情况会返回true;
【若变量存在且值为""、0、"0"、NULL、、FALSE、array()、var $var;以及没有任何属性的对象,则返回TURE】
2.数组处理array_merge和数组相加的不同
首先先看都是数字下标的情况
$arr=[1,2,3,4];
$arr2=[5,6,7,8,9];
$arr3=array_merge($arr,$arr2);
$arr4=$arr+$arr3;
打印返回结果$arr3返回结果如下
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 )
$arr4返回结果
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 9 )
$arr3会返回$arr和$arr2的全部数据;
$arr4返回的是如果键值相同 数组具有相同的键值不会覆盖 而是被抛弃;没有的键值会追加进入并返回一个新数组;
我就不往下写其他测试结果了;
我总结一下:
当下标为数值时,array_merge()不会覆盖掉原来的值,但array+array合并数组则会把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值将会被“抛弃”掉(不是覆盖)
当下标为字符时,array+array仍然把最先出现的值作为最终结果返回,而把后面的数组拥有相同键名的那些值“抛弃”掉, 但array_merge()此时会覆盖掉前面相同键名的值,就是抛弃前面的值.
所以对应使用合并数组方法请结合业务来选择;数组去重就不只是单一的array_unique(array_merge())了
七. 记录一下高精度计时函数
PHP 为任意精度数学计算提供了二进制计算器(Binary Calculator),它支持任意大小和精度的数字,以字符串形式描述
bcadd — 加法
bccomp — 比较
bcdiv — 相除
bcmod — 求余数
bcmul — 乘法
bcpow — 次方
bcpowmod — 先次方然后求余数
bcscale — 给所有函数设置小数位精度
bcsqrt — 求平方根
bcsub — 减法
八.记录php将数组或者对象写入文件得三种方法
- serialize方法(序列化存,反序列取)
<?php
$file='./cache/phone.php';
$array=array('color'=> array('blue','red','green'),'size'=> array('small','medium','large'));
//缓存
if(false!==fopen($file,'w+')){
file_put_contents($file,serialize($array));//写入缓存
}
//读出缓存
$handle=fopen($file,'r');
$cacheArray=unserialize(fread($handle,filesize($file)));
- print_r方法
<?php
$b = array (
'm' => 'monkey',
'foo' => 'bar',
'x' => array ('x', 'y', 'z'));
$results = print_r($b, true);
file_put_contents('filename.txt', print_r($b, true));
?>
3.var_export方法(推荐)
<?php
$file='./cache/phone.php';
$array=array('color'=> array('blue','red','green'),'size'=> array('small','medium','large'));
//缓存
$text='<?php $rows='.var_export($array,true).';';
if(false!==fopen($file,'w+')){
file_put_contents($file,$text);
}else{
echo '创建失败';
}
九、号码隐藏
function yincang($string, $start = 0, $length = 0, $re = '*'){
if(empty($string) || empty($length) || empty($re)) return $string;
$end = $start + $length;
$strlen = mb_strlen($string);
$str_arr = array();
for($i=0; $i<$strlen; $i++) {
if($i>=$start && $i<$end)
$str_arr[] = $re;
else
$str_arr[] = mb_substr($string, $i, 1);
}
return implode('',$str_arr);
}