首页 > 解决方案 > PHP:将对象转换为以对象属性为键的关联数组

问题描述

在 PHP 中,我想将如下对象数组转换为 PHP 数组,使用其中一个属性作为关联数组键。

[
  { "id": 2, "name": "Suzy" },
  { "id": 3, "name": "Joe" },
  { "id": 4, "name": "Sara" }
]

像这样...

[
  2 => "Suzy",
  3 => "Joe",
  4 => "Sara"
]

我不能使用 array_map 因为你不能根据我的理解设置键,但我想知道是否有一种没有 foreach 循环的单线方法。

需要明确的是,我想维护输出数组中的键,而不是像这里那样将原始键放在新的数组值中:PHP's array_map include keys

标签: phparraysobject

解决方案


它出现的“对象”是指 JSON 对象。鉴于此,您可以使用array_column()从每一行中提取一列,然后array_combine()将一列用作键,另一列用作值:

$json = '[
    { "id": 2, "name": "Suzy" },
    { "id": 3, "name": "Joe" },
    { "id": 4, "name": "Sara" }
]';
$array = json_decode($json, true);
$out = array_combine(array_column($array, 'id'), array_column($array, 'name'));
print_r($out);

产量:

Array
(
    [2] => Suzy
    [3] => Joe
    [4] => Sara
)

推荐阅读