我需要一些帮助来重构从 API 获得的数组。当前的格式对我来说很难使用,所以我想将其更改为更可行的格式。
我有以下数组:
[
'attributes' => [
['attribute' => 'Healing', 'modifier' => 179],
['attribute' => 'Toughness', 'modifier' => 128],
['attribute' => 'ConditionDamage', 'modifier' => 179],
]
]
我想把它变成这样:
[
'attributes' => [
'Healing' => 179,
'Toughness' => 128,
'ConditionDamage' => 179,
]
]
如果您使用 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']);
}
);
使用 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'];
}
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)