问题描述
array(2) {
[0]=>
object(stdClass)#1869 (10) {
["id"]=>
string(1) "1"
["country"]=>
string(7) "Austria"
["cat_one"]=>
string(7) "#FFCB69"
}
[1]=>
object(stdClass)#1868 (10) {
["id"]=>
string(1) "2"
["country"]=>
string(7) "Belgium"
["cat_one"]=>
string(7) "#FFCB69"
}
}
我想使用country属性并将其设置为根对象中每个值的键。 foreach会重置每个键上的整个对象值。预期结果类似于下面的结果-
array(2) {
[Austria]=>
object(stdClass)#1869 (10) {
["id"]=>
string(1) "1"
["cat_one"]=>
string(7) "#FFCB69"
}
[Belgium]=>
object(stdClass)#1868 (10) {
["id"]=>
string(1) "2"
["cat_one"]=>
string(7) "#FFCB69"
}
}
解决方法
由于array_column
可以从作为数组元素的对象中提取公共属性,因此您可以:
$array = []; // your initial array
print_r(
array_combine(
// extract country property from each object
array_column($array,'country'),$array
)
);
但是此方法不会从每个对象中删除 country
属性。