merge将对象数组合并为具有唯一对象的数组

时间:2018-03-01 23:12:59

标签: php arrays laravel

我有一个各种对象的数组,但我需要将这些对象转换为唯一的对象。下面我分享我的代码。

[
  { "INICIAL": "Inicial"},{ "RELATORIOS": "Relatórios"},{ "FUNCIONARIO": "Funcionário"},{ "DATA": "Data"},{ "ANEXAR_IMAGEM": "Anexar imagem"},{ "DISCIPLINA": "Disciplina"}
]

效应初探

[
    {
        "INICIAL": "Inicial",
        "RELATORIOS": "Relatórios",
        "FUNCIONARIO": "Funcionário",
        "DATA": "Data",
        "ANEXAR_IMAGEM": "Anexar imagem",
        "DISCIPLINA": "Disciplina"
    }
]

但我需要将这些对象转换为一个,就像这样

{{1}}

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

$idiomas = Idioma::all()->toArray();

if (count($idiomas)) {
    //$result = new stdClass; # wouldn't work without base namespace
    $result = new \stdClass;
    foreach ($idiomas as $lang) {
        $result->{$lang['palavra_chave']} = $lang[$id];
    }
    return response()->json([$result]);
}

// otherwise

答案 1 :(得分:0)

编辑: @Tpojka的答案肯定看起来更合适。只有在最初无法改变检索数据的方式时才使用以下方法(我对Laravel不够熟悉)。

以下内容应该有效:

// Take your initial JSON
$input = <<<JSON
[
  { "INICIAL": "Inicial"},{ "RELATORIOS": "Relatórios"},{ "FUNCIONARIO": "Funcionário"},{ "DATA": "Data"},{ "ANEXAR_IMAGEM": "Anexar imagem"},{ "DISCIPLINA": "Disciplina"}
]
JSON;

// Transform it into a PHP array
$input_as_array = json_decode($input);

// Reduce it into an associative array
$associative_array = array_reduce($input_as_array, function($associative_array, $item) {
    return $associative_array += (array)$item;
}, []);

// Encode it back into JSON, as an array
$result = json_encode([$associative_array], JSON_PRETTY_PRINT);