具有以下数组,
$dataset = [
['item1' => 'value1'],
['item2' => 'value2'],
['item3' => 'value3'],
];
我需要将其转换为这个stdClass
对象
$dataset = [
'item1' => 'value1',
'item2' => 'value2',
'item3' => 'value3',
];
为此,我使用了这些嵌套的foreach
$object = new stdClass;
foreach ($dataset as $item) {
foreach ($item as $key => $value) {
$object->{$key} = $value;
}
}
// At this point $object is the expected output
我正在寻找一种更好的方法,可以避免foreach嵌套
最终的预期输出是
stdClass Object
(
[item1] => value1
[item2] => value2
[item3] => value3
)
感谢您的建议。
答案 0 :(得分:3)
检查此!一切正常
首先array_merge
,然后是json_encode
的{{1}}和json_decode
stdClass
,您也可以将<?php
$dataset = [
['item1' => 'value1'],
['item2' => 'value2'],
['item3' => 'value3'],
];
$dataset = call_user_func_array('array_merge', $dataset);
$dataset= json_decode(json_encode($dataset));
echo "<pre>";
print_r($dataset);
用于stdClass之类的
object
有多种获取$dataset=(object) $dataset;//make sure first you merge array
的方法。因此,here is the most valuable answer for stdClass object
答案 1 :(得分:1)
对不起,我错过了您想要展平阵列的位置。我将添加Bilal Ahmed关于合并数组的建议。
对于您的案例,您无需使用json_decode(json_encode($dataset));
但是,请记住,如果您有嵌套数组,那么json_decode(json_encode($dataset));
是更好的解决方案。
$dataset = [
['item1' => 'value1'],
['item2' => 'value2'],
['item3' => 'value3'],
];
$dataset = call_user_func_array('array_merge', $dataset);
$object = (object)$dataset;
echo '<pre>';
print_r($object);
echo '</pre>';
这将输出:
stdClass Object
(
[item1] => value1
[item2] => value2
[item3] => value3
)
答案 2 :(得分:0)
我相信这将是完成工作的一种优雅方式
$dataset = (object)call_user_func_array('array_merge', $dataset);
print_r($dataset);