基于来自不同数组的数组两个值创建键值数组

时间:2014-04-21 00:04:07

标签: php arrays

我有这个数组:

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

我的问题是:是否存在本地方式,而不是为其设置自定义功能?

感谢。

3 个答案:

答案 0 :(得分:2)

如果您使用的是PHP 5.5,则可以使用array_column()

 $discounts= array_column($priceTableData , 'discount');

Demo

由于它是在评论中提出的,我还将提供如果你的数组键是由产品ID定义的,你应该使用array_column()中的第三个参数来指定productId作为新的键。阵列:

$discounts= array_column($priceTableData , 'discount', 'productId ');

Demo

答案 1 :(得分:2)

您可以使用PHP 5.5中引入的array_column

$result = array_column($priceTableData, 'discount','productId');

print_r($result);

答案 2 :(得分:2)

如果是旧版本的php。

    $result = array_map(function($sub)
 { return $sub['discount']; }, $priceTableData);