我有这个数组:
$priceTableData = array(
array('productId'=>1,'price'=>50,'discount'=>12),
array('productId'=>2,'price'=>22,'discount'=>2),
array('productId'=>3,'price'=>7,'discount'=>0),
array('productId'=>4,'price'=>9,'discount'=>0),
array('productId'=>5,'price'=>35,'discount'=>7),
);
我想得到这个阵列:
array(5) {
[1]=> int(12)
[2]=> int(2)
[3]=> int(0)
[4]=> int(0)
[5]=> int(7)
}
我使用了这种自定义方法,
function getDiscounts(array $priceData){
$result = array();
foreach ($priceData as $array){
$result[$array['productId']] = $array['discount'];
}
return $result;
}
然后我就这样用了:
var_dump(getDiscounts($priceTableData));
我的问题是:是否有一种原生的方法来实现这一点,而不是为其提供自定义函数?
谢谢。
如果您使用的是PHP 5.5,则可以使用array_column()
:
$discounts= array_column($priceTableData , 'discount');
演示
由于在评论中提到了这一点,我还将提出,如果您的数组键是由产品ID定义的,那么您应该使用array_column()中的第三个参数来指定productId
作为新数组中的键:
$discounts= array_column($priceTableData , 'discount', 'productId ');
演示
您可以像一样使用PHP 5.5中引入的array_column
$result = array_column($priceTableData, 'discount','productId');
print_r($result);
如果是php的旧版本。
$result = array_map(function($sub)
{ return $sub['discount']; }, $priceTableData);