使用数组列作为键和值创建关联数组[重复]

问题描述 投票:0回答:3

我需要一些帮助来重构从 API 获得的数组。当前的格式对我来说很难使用,所以我想将其更改为更可行的格式。

我有以下数组:

[
    'attributes' => [
        ['attribute' => 'Healing', 'modifier' => 179],
        ['attribute' => 'Toughness', 'modifier' => 128],
        ['attribute' => 'ConditionDamage', 'modifier' => 179],
    ]
]

我想把它变成这样:

[
    'attributes' => [
        'Healing' => 179,
        'Toughness' => 128,
        'ConditionDamage' => 179,
    ]
]
php arrays multidimensional-array
3个回答
1
投票

如果您使用 PHP >= 5.5

$array['attributes'] = array_column(
    $array['attributes'],
    'attribute',
    'modifier'
);

否则

$array['attributes'] = array_walk(
    $array['attributes'],
    function (&$value) {
        $value[$value['attribute']] = $value['modifier'];
        unset($value['attribute'], $value['modifier']);
    }
);

1
投票

使用 PHP >= 5.5,您可以利用 array_column()array_combine() 结合使用。

$new_arr = array_combine(array_column($arr, 'attribute'), array_column($arr, 'modifier'));

查看演示


否则,一个简单的

foreach
就可以了:

foreach ($arr as $ar) {
    $new_arr[$ar['attribute']] = $ar['modifier'];
}

查看演示


1
投票
function flattenAPIarray($APIArray)
{
    $flatArray = [];

    foreach($APIArray as $element)
    {
        $key = array_keys($element);
        $flatArray[$element[$key[0]]] = $element[$key[1]];
    }

    return $flatArray;
}

试试我为你写的这个功能。它没有以任何方式概括,但可以很好地与多维关联数组一起使用。线索是使用 array_keys() 函数,因为您没有任何索引可以使用 foreach 循环进行迭代。

希望有帮助! (这是我的第一个答案 - 友善一点:o)

© www.soinside.com 2019 - 2024. All rights reserved.