我有以下数组。
{#11950
+"attributes": array:3 [
0 => {#608
+"attribute_value": "test123"
+"attribute_name": "name"
}
1 => {#556
+"attribute_value": "foo moo"
+"attribute_name": "lastname"
}
2 => {#605
+"attribute_value": "sample moo"
+"attribute_name": "email"
}
3 => {#606
+"attribute_value": "holo"
+"attribute_name": "adress"
}
]
}
我想将其转换为关注
$a = array(
'name' => 'test123',
'lastname' => 'foo moo',
'email' => 'sample moo',
'address' => 'holo
);
我会做无数次同样的操作,所以我认为应该有一个合适的解决方案,而不是循环所有的值,并使用if else等检查attribute_name。
答案 0 :(得分:3)
您可以使用array_column
参数通过一次调用$index_key
来执行此操作:
$arr = [
['attribute_name' => 'foo', 'attribute_value' => 123],
['attribute_name' => 'bar', 'attribute_value' => 456],
['attribute_name' => 'baz', 'attribute_value' => 789],
];
$result = array_column($arr, 'attribute_value', 'attribute_name');
答案 1 :(得分:0)
你可以做一个简单的foreach循环并构建结果数组:)
$result = [];
foreach ($array as $attr) {
$result[$attr['attribute_name']] = $attr['attribute_value'];
}
这看起来好一点。在大多数情况下,它可能没有太大的不同,但我不认为它只是一个简单的foreach;)
$result = array_combine(
array_column($array, 'attribute_name'),
array_column($array, 'attribute_value')
);
答案 2 :(得分:0)
简短而简单:
$result = array_combine(array_column($arr, 'attribute_name'), array_column($arr, 'attribute_value'));