如何从PHP数组提取指定值生成新数组?两种方法对比
PHP购物车数组提取商品代码及方法对比
示例数组
Array ( [A1345] => Array ( [name] => Choco Chip Cookies [code] => A1345 [price] => 180 [quantity] => 1 [mrp] => 220 ) [A1344] => Array ( [name] => Handmade Soap [code] => A1344 [price] => 210 [quantity] => 1 [mrp] => 258 ) )
需求
从上述多维数组中提取所有code字段的值形成新数组,用于用户提交购物车时将商品代码保存到数据库,实际数组规模不固定。
两种实现方法对比
方法1:使用array_column()
$codes = array_column($array, 'code'); print_r($codes);
执行结果:
Array ( [0] => A1345 [1] => A1344 )
方法2:使用array_map()
$result = array_map( function($x) { return $x['code']; }, $array); print_r($result);
执行结果:
Array ( [A1345] => A1345 [A1344] => A1344 )
优劣分析
array_column()是PHP内置的专门用于提取多维数组指定列的函数,代码简洁直观,可读性强,性能也优于自定义回调的array_map()。返回的索引数组完全满足“保存商品代码到数据库”的需求——只需要代码值的集合即可。array_map()需要自定义匿名函数来提取字段,代码相对繁琐。它会保留原数组的键,得到的是键值相同的关联数组,这种结构在你的需求场景下没有额外价值,反而可能增加不必要的处理成本。
综上,优先选择array_column()的实现方式,更贴合你的业务需求且高效简洁。
内容的提问来源于stack exchange,提问作者AbleInfosoft Gmail
相关产品推荐
相关产品推荐

