此问题已在此处有答案:
Generate an associative array from an array of rows using one column as keys and another column as values(3个答案)
昨天关门了。
假设我有下面的数组
[
{
"id": "16",
"name": "dog",
},
{
"id": "17",
"name": "cat",
},
{
"id": "18",
"name": "mouse",
}
]
我想使用一个特定的属性id
作为数组的键。我可以这样做:
$someArray = [
["id" => "16", "name" => "dog"],
["id" => "17", "name" => "cat"],
["id" => "18", "name" => "mouse"]
];
$newArray = [];
foreach ($someArray as $currItem)
{
$newArray[$currItem["id"]] = $currItem;
}
那我就有了这个(想要的结果)
{
"16": {
"id": "16",
"name": "dog"
},
"17": {
"id": "17",
"name": "cat"
},
"18": {
"id": "18",
"name": "mouse"
}
}
我的问题是:有没有更好的方法来做到这一点?我真的必须循环遍历每一项,只是为了稍微重新定义我的数组吗?
2条答案
按热度按时间pwuypxnk1#
你比我先找到答案,但我可能会贡献一点...
我不确定你的原始数组是从哪里来的,但是如果你正在解码JSON,那么你可以提供第二个参数来强制对象转换为关联数组
编辑:如果你可以容忍你的输出数组有对象,这也可能起作用:
但是要记住,对于非常非常大的数组,性能可能会成为一个问题。
eh57zj3b2#
我似乎已经找到了一个解决方案,使用信息从Rizier123的答案对另一个问题。
据我所知,
array_column()
只会给予我一个id数组,所以我需要将它与array_combine()
和array_values()
一起使用。