将带有键的对象数组转换为键控数组

时间:2016-02-08 15:47:33

标签: php arrays json optimization

我有一组定义为{'preference name',value}的对象。例如

$preferences[] = {'abc',123};
$preferences[] = {'def',456};

我想像这样访问它们:

$pref = $preferences['abc'];

当然,我知道我可以将它们作为键控数组开始分配,但是我通过JSON获取值,而json_decode总是创建一个对象数组。引导我们处理上述情况的一些示例JSON将是:

{'abc':123,'def':456}

显然使用循环来隐藏它们是微不足道的,但我想知道是否有更好的单行程可以完成这项工作?

2 个答案:

答案 0 :(得分:1)

如果将JSON解码为关联数组并且所有属性都是唯一的,那么只需合并子数组:

$preferences = json_decode($json, true);
$preferences = call_user_func_array('array_merge', $preferences);

答案 1 :(得分:0)

看起来很难看,但嘿,它有效。

<?php

$a = ['abc'=>123,'def'=>456];
$obj = json_decode(json_encode($a));
var_dump($obj->abc); //123
$arr = (array)$obj;
var_dump($arr["abc"]); //123