根据不同数组中的两个值创建一个键值数组


create a key value array based on array two values from different array

我有这个数组:

$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);