Thinkphp语法小知识/实用小方法 Thinkphp语法小知识1.数组解构赋值ThinkPHP 高频写法php版本7.1及以上$validateUser.edit;[$validate,$scene]explode(.,$validate);// 拆分后// $validate User// $scene edit2.展开运算符用法php版本5.6及以上$array[1,2];$sub_data[3,4,5];array_push($array,...$sub_data);// 添加后// $array [1,2,3,4,5]把 $sub_data 数组里每一项单独拆开依次传给 array_push 作为追加元素。3.根据月、日获取星座/** * param unknown $month 月 * param unknown $day 日 * return boolean|multitype: */functionget_zodiac_sign($month,$day){// 检查参数有效性if($month1||$month12||$day1||$day31){returnfalse;}// 星座名称以及开始日期$signsarray(array(20水瓶座),array(19双鱼座),array(21白羊座),array(20金牛座),array(21双子座),array(22巨蟹座),array(23狮子座),array(23处女座),array(23天秤座),array(24天蝎座),array(22射手座),array(22摩羯座));list($sign_start,$sign_name)each($signs[(int)$month-1]);if($day$sign_start){list($sign_start,$sign_name)each($signs[($month-20)?$month11:$month-2]);}return$sign_name;}4.获取格式化显示时间/** * 获取格式化显示时间 * param int $time 时间戳 * return false|string 返回结果 */functionget_format_time($time){$time(int)substr($time,0,10);$inttime()-$time;$str;if($int2){$strsprintf(刚刚,$int);}elseif($int60){$strsprintf(%d秒前,$int);}elseif($int3600){$strsprintf(%d分钟前,floor($int/60));}elseif($int86400){$strsprintf(%d小时前,floor($int/3600));}elseif($int1728000){$strsprintf(%d天前,floor($int/86400));}else{$strdate(Y年m月d日,$time);}return$str;}5.获取设备类型(苹果或安卓)/** * 获取设备类型(苹果或安卓) * return int 返回结果 */functionget_device_type(){// 全部变成小写字母$agentstrtolower($_SERVER[HTTP_USER_AGENT]);$type0;// 分别进行判断if(strpos($agent,iphone)!false||strpos($agent,ipad)!false){$type1;}if(strpos($agent,android)!false){$type2;}return$type;}6.常用的正则表达式preg_match(/^([a-zA-Z0-9_\.\-])\(([a-zA-Z0-9\-])\.)([a-zA-Z0-9]{2,4})$/,$str);// 邮箱preg_match(/^1[3456789]{1}\d{9}$/,$mobile);// 手机号preg_match(/^[1-9][0-9]{5}$/,$code);// 邮编7.验证身份证是否正确/** * 验证身份证是否正确 * param string $idno 身份证号 * return bool 返回结果true或false */functionis_idcard($idno){$idnostrtoupper($idno);$regx/(^\d{15}$)|(^\d{17}([0-9]|X)$)/;$arr_splitarray();if(!preg_match($regx,$idno)){returnfalse;}// 检查15位if(15strlen($idno)){$regx/^(\d{6})(\d{2})(\d{2})(\d{2})(\d{3})$/;preg_match($regx,$idno,$arr_split);$dtm_birth19.$arr_split[2]./.$arr_split[3]./.$arr_split[4];if(!strtotime($dtm_birth)){returnfalse;}else{returntrue;}}else{// 检查18位$regx/^(\d{6})(\d{4})(\d{2})(\d{2})(\d{3})([0-9]|X)$/;preg_match($regx,$idno,$arr_split);$dtm_birth$arr_split[2]./.$arr_split[3]./.$arr_split[4];// 检查生日日期是否正确if(!strtotime($dtm_birth)){returnfalse;}else{// 检验18位身份证的校验码是否正确。// 校验位按照ISO 7064:1983.MOD 11-2的规定生成X可以认为是数字10。$arr_intarray(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2);$arr_charray(1,0,X,9,8,7,6,5,4,3,2);$sign0;for($i0;$i17;$i){$b(int)$idno[$i];$w$arr_int[$i];$sign$b*$w;}$n$sign%11;$val_num$arr_ch[$n];if($val_num!substr($idno,17,1)){returnfalse;}else{returntrue;}}}}8.判断是否为图片格式/** * 判断是否为图片格式 * param $filename * return bool|false|int */functionis_image($filename){$types.gif|.GIF|.jpg|.JPG|.jpeg|.JPEG|.png|.PNG|.bmp|.BMP;//定义检查的图片类型if(file_exists($filename)){$infogetimagesize($filename);$extimage_type_to_extension($info[2]);returnstripos($types,$ext);}else{returnfalse;}}