LMLPHP后院

使用array_map取代PHP函数array_column技术

maybe yes 发表于 2016-09-03 07:18

PHP 函数 array_column 是 PHP5.5 之后才支持的,在国内各大平台运行环境比较混乱的情况下,绝大多数的主机服务器还都在使用 PHP5.3 左右的版本。为了程序的健壮性,慎用此函数,最好使用 array_map 来取代它,不过 array_map 的取代也只能向下兼容到 5.3 的版本因为需要使用 lambda 函数表达式

如下示例:

array_column($array, $column)
array_map(function($e) use ($column) {return $e[$column];}, $array);

array_column($array, 'type');
array_map(function($e) {return $e['type'];}, $array);

个人不是很推荐使用 if function exists 的方式判断某个函数是否存在,然后再申明某个函数,这样做感觉代码特别乱,函数要么用,要么不用,只要保证代码在编写过程中兼容到某个最低的 PHP 版本的原则即可。

自从 PHP5.3 开始支持了 lambda 表达式,此后 PHP 的函数可以实现的功能就非常强大了,可以说几乎任何功能一个函数都可以搞定,不再需要借助类的方式实现。而之前在 PHP 中仅仅使用函数很多功能就实现不了,或者实现起来非常麻烦,特别是回调的时候,你总不能回调一个全局的函数吧,那样代码就很难维护了;虽然使用 function_create 在函数内部也可以创造一个临时函数,但是有个痛点,很难访问并使用到外部变量,支持 lambda 之后使用 use 关键词就可以搞定。

相关文章
2024-04-20 07:31:40 1713569500 0.026809