PHP
常用技巧、开发心得、经验分享
一杯美式:)
这个作者很懒,什么都没留下…
展开
-
使用foreach遍历对象
PHP5起可以使用foreach遍历对象,但受访问权限的影响。<?phpclass MyClass{ public $var1 = 'value 1'; public $var2 = 'value 2'; public $var3 = 'value 3'; protected $protected = 'protected var'; private $private = 'private var'; function iterateV原创 2021-06-19 13:14:11 · 1009 阅读 · 0 评论 -
PHP 匿名函数bind与bindTo方法使用总结
闭包函数又叫匿名函数,即一个没有函数名称的函数。$func = function ($var) { return $var;};在定义一个闭包函数时实际就是定义了一个Closure类的实例化对象, 这个类中有三个final的方法:Closure { __construct ( void ) public static Closure bind (Closure $closure , object $newthis [, mixed $newscope = 'stat原创 2021-03-16 22:52:23 · 1002 阅读 · 0 评论 -
php get_called_class()函数与get_class()函数的区别
get_class (): 获取当前调用方法的类名;get_called_class():获取静态绑定后的类名, 即当前运行的类的类名。class Foo{ public function test(){ var_dump(get_class()); } public function test2(){ var_dump(get_called_class()); } public static fu.原创 2021-03-15 16:14:18 · 150 阅读 · 0 评论 -
php 延迟静态绑定
其实很简单, self被解析为定义当前属性、方法所在的类,而static被解析为实际运行时所在的类。举例:class A{ static $name = "Tom"; public function printName(){ echo self::$name."\n"; self::fun(); } static function fun(){ echo "A Class\n"; }}class B extend原创 2021-03-15 15:40:27 · 96 阅读 · 0 评论 -
PHP 自定义函数,移动上传的文件至指定位置(兼容多个PHP版本)
函数取自Discuz(略有改动),觉得挺不错的基本兼容了所有PHP版本。参数:source:当前位置target:目标位置返回值:成功返回true,失败返回false function save_to_local($source, $target) { if(!is_upload_file($source)) { $succeed = false; }elseif(@copy($source, $target)) { $succeed = true; }elseif(fun原创 2021-03-11 15:40:36 · 100 阅读 · 0 评论 -
php flock 使用实例
bool flock ( resource $handle , int $operation [, int &$wouldblock ] )flock()允许执行一个简单的可以在任何平台中使用的读取/写入模型(包括大部分的Unix派生版和windows)在PHP 5.3.2版本之前,锁会被 fclose() 释放(在脚本结束后会自动调用),现在需要手动解锁operation参数1.LOCK_SH 取得共享锁(读取的程序)2.LOCK_EX 取得独占锁(写入的程序)3.LOCK_UN 释转载 2021-03-11 11:33:01 · 211 阅读 · 0 评论 -
PHP header函数常见用法
header — 发送原生 HTTP 头header ( string $string , bool $replace = true , int $http_response_code = ? ) : void参数:header:用于保存标题字符串。有两种类型的标头调用,第一种是以字符串“HTTP /”开头,用于确定要发送的HTTP状态代码;第二种是“Location:”开头,这是强制性参数。replace:用于表示标题应该替换前一个或添加第二个标题,可省略。默认值为True(将替换),如果值.原创 2021-03-11 09:58:10 · 121 阅读 · 0 评论 -
PHP http_build_query用法详解
http_build_query — 生成 URL-encode 之后的请求字符串http_build_query ( mixed $query_data , string $numeric_prefix = ? , string $arg_separator = ? , int $enc_type = PHP_QUERY_RFC1738 ) : string参数解释:query_data:可以是数组或包含属性的对象,数组支持多维数组,对象只有公有权限的才会加入结果numeric_prefix.原创 2021-03-11 09:43:37 · 9085 阅读 · 0 评论 -
PHP判断是否移动端访问
function isMobile($server){ // 如果有HTTP_X_WAP_PROFILE则一定是移动设备 if (isset($server['HTTP_X_WAP_PROFILE'])) { return true; } // 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息 if (isset($server['HTTP_VIA']) && stris原创 2021-03-09 18:12:30 · 414 阅读 · 0 评论 -
PHP数组排序函数array_multisort()函数详解
array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列——有点拗口,真的,并且我要只是这样说你一定也不明白。先举个例子:例如array_multisort($a,$b),$a,$b是两个数组,如果排序之后,$a数组的第3个元素被排到了第一位,那么$b的第三个元素不管他在$b中的大小都会排在第一位。看看下边的程序运行结果:<?php $a =array(100,80,50,10,0);$b = array("c","f","q",原创 2021-03-07 08:53:18 · 339 阅读 · 0 评论 -
php 转换编码之iconv与mb_convert_encoding
iconviconv ( string $in_charset , string $out_charset , string $str ) : string举例:iconv("UTF-8", "GBK//TRANSLIT", $str); // 从UTF8转为GBK, 遇到无法转换的字符用形似字符代替iconv("UTF-8", "GBK//IGNORE", $str); // 从UTF8转为GBK, 遇到无法转换的字符直接丢弃参数解析:$in_charset: 当前编码$out_cha原创 2021-03-05 19:24:43 · 772 阅读 · 0 评论 -
php foreach+list进行数组迭代
$array = [ [1, 2], [3, 4],];foreach ($array as list($a, $b)) { echo "A: $a; B: $b\n";}以上会输出:A: 1; B: 2A: 3; B: 4实际就是把数组$value的值赋值给list()中的变量。list() 中的单元可以少于嵌套数组的,此时多出来的数组单元将被忽略:$array = [ [1, 2], [3, 4],];foreach ($array as原创 2021-03-03 15:52:35 · 246 阅读 · 1 评论 -
关于php中的 return用法
如果在一个函数中调用 return 语句,将立即结束此函数的执行并将它的参数作为函数的值返回。return 也会终止 eval() 语句或者脚本文件的执行。如果在全局范围中调用,则当前脚本文件中止运行。如果当前脚本文件是被 include 的或者 require 的,则控制交回调用文件。此外,如果当前脚本是被 include 的,则 return 的值会被当作 include 调用的返回值。如果在主脚本文件中调用 return,则脚本中止运行。如果当前脚本文件是在 php.ini 中的配置选项.原创 2021-03-03 14:07:12 · 354 阅读 · 0 评论 -
PHP 使用constant函数获取常量值
默认情况下可以直接使用echo来输出常量的值,但如果常量的名称是特殊符号,使用echo会报错。此时就要借助constant函数来输出举例:define('O(∩_∩)O',1);echo O(∩_∩)O; //直接报错echo constant('O(∩_∩)O'); //输出1...原创 2021-03-03 11:31:53 · 499 阅读 · 0 评论 -
判断字符串是否为空白
$string = '';// 方法一使用empty()empty($string); //true// 方法二使用ctype_space()ctype_space($string) //true更推荐使用ctype_space来判断是否为空白, 因为他将所有形式的空白都认定为空白(如制表、换行、空格),而empty不会。...原创 2021-03-03 11:26:36 · 743 阅读 · 0 评论 -
php is_callable 和 function_exists 和 method_exists区别
function_exists用于检测函数是否存在method_exists用户检测类中的方法是否存在is_callable既可以检测函数是否存在, 又可以检测类中的方法是否存在。 检测函数是否存在效果和function_exists一样,但**检测类中的方法是否存在会受private和protected影响,如果方法存在但无法调用同样也会返回false。**而method_exists不会,只要类中存在此方法就返回true。例:<?phpclass test{ private f原创 2021-03-03 11:05:01 · 139 阅读 · 0 评论 -
php流程语句冒号写法
将起始的左花括号替换为:, 结尾的右花括号替换为对应的endxxx;支持的流程语句: if、for、white、foreach、switch例:// endifif($a > 0){return true;}if($a > 0): return true; endif;// endforfor($i=1;$i<=2;$i++){echo $i;}for($i=1;$i<=2;$i++): echo $i; endfor;// endforeach$arra原创 2021-03-03 10:16:14 · 236 阅读 · 0 评论 -
PHP strtr函数用法
格式:strtr(string,from,to) 或者 strtr(string,array)如果使用strtr(string,from,to) 格式, 则替换的模式是逐字替换,如果from和to的长度不相等,则以短的为准。$str = 'ABCD';echo strtr($str,'AB','12'); // 输出12CDecho strtr($str, 'AB','1'); // 输出 1BCD, 这边from和to的长度不相等,只替换了A剩下的原样输出echo strtr($str,'A.原创 2021-02-10 23:47:43 · 353 阅读 · 0 评论 -
PHP 判断数组是索引数组还是关联数组
索引数组的索引值是整数,而关联数组的索引值是字符串。所以我们只要判断是否中数组中是否存在字符串类型的下标即可。<?php$array = array('A','B'); if(count(array_filter(array_keys($array),'is_string')) > 0){ echo '$array为关联数组';}else{ echo '$array为索引数组';}?>...原创 2021-02-10 23:06:24 · 1169 阅读 · 0 评论 -
php从数组中随机选出一个元素, 比array_rand更高效的方法
$array[mt_rand(0,count($array)-1)];在数据量较大的情况下测试, 使用该方法比直接使用array_rand()返回键名要快近27.3 倍。从 PHP7.1 开始,内部随机化算法已更改为使用完全相同的算法。原创 2021-02-10 20:21:28 · 315 阅读 · 0 评论 -
php删除数组中的重复值, 比array_unique更高效的方法
通常删除数组中的重复值, 我们可以使用array_unique() ,但实际上还可以通过借助array_flip()函数交换数组中的键和值, 在通过array_keys()函数返回重组后的值。最关键是在数据量较大的情况下此方法比直接使用array_unique()要快上近1.7倍,但仅适用于一维数组。array_keys(array_flip($array));...原创 2021-02-10 20:14:21 · 169 阅读 · 0 评论 -
php上传base64图片
1. 首先判断是否为标准的base64格式的图片base64格式的图片,代码都是以data:image/png;base64, 为开头,后面紧跟着一大串base64代码。所以最简单的用explode函数根据 , 进行分割即可获得开头的代码,然后在判断此代码是否为data:image/png;base64,如果是则进行下一步的转码操作,否则直接终止上传程序。<?php$base64img = 'XXX'; // 假设XXX为base64的图片代码, 因代码太长我就不放上来。$info =原创 2021-02-10 15:22:10 · 857 阅读 · 1 评论