首页 > 解决方案 > 复杂的php数组组合(两种不同的结构)

问题描述

我什至不知道该用什么词:)

我有这个数组:

array(
    0 => array(
        'protein' => 'proteiny',
        'total_fat' => 'total faty',
        'carbohydrates' => 'carbohydrates',
        'food_energy' => 'food energy',
...

还有另一个数组:

1 => array(
    'protein' => 'grams',
    'total_fat' => 'grams',
    'carbohydrates' => 'grams',
    'food_energy' => 'kcals',
...

我想将它们组合成这个结构中的一个新数组:

$newone = array(
        array('slug' => 'protein', 'name' => 'proteiny', 'format' => 'grams'),
        array('slug' => 'total_fat', 'name' => 'total faty', 'format' => 'grams'),
        array('slug' => 'carbohydrates', 'name' => 'carbohydrates', 'format' => 'grams'),
        array('slug' => 'food_energy', 'name' => 'food energy', 'format' => 'kcals'),
    ...

有什么办法吗?

标签: phparrayssortingmergearray-merge

解决方案


您可以在具有范围use($b)的数组上使用array_map( )来制作. 例子:$a$newone

$a = array('protein' => 'proteiny', 'total_fat' => 'total faty', 'carbohydrates' => 'carbohydrates', 'food_energy' => 'food energy');
$b = array('protein' => 'grams', 'total_fat' => 'grams', 'carbohydrates' => 'grams', 'food_energy' => 'kcals');

$newone = array_map(function($val, $slug) use ($b) {
    return array('slug' => $slug, 'name' => $val, 'format' => $b[$slug]);
}, $a, array_keys($a));

print_r($newone);

工作演示


推荐阅读