PHP自定义array_column报Cannot redeclare错误的替代代码求助
错误原因
PHP 5.5及以上版本已经内置了原生array_column()函数,自定义同名函数会触发重声明冲突。
方案1:直接使用PHP原生函数(推荐)
直接删除你自定义的array_column()函数即可,原生函数支持更多用法,除提取指定列值外,还可以指定第三参数作为返回数组的索引键:
// 原生函数用法示例 $records = [ ['id' => 1, 'name' => '张三'], ['id' => 2, 'name' => '李四'], ]; // 提取name列 $names = array_column($records, 'name'); // 提取name列,以id为索引 $idToName = array_column($records, 'name', 'id');
方案2:兼容PHP 5.5以下老版本
如果你的运行环境是PHP 5.4及更低版本,没有内置array_column()函数,可以添加函数存在性判断逻辑,避免重声明冲突:
if (!function_exists('array_column')) { function array_column($array, $column_name, $index_key = null) { $output = []; foreach ($array as $item) { $value = $item[$column_name]; if ($index_key !== null) { $output[$item[$index_key]] = $value; } else { $output[] = $value; } } return $output; } }
内容的提问来源于stack exchange,提问作者TaeCool 's
相关产品推荐
相关产品推荐

