Php 插入数组作为对象属性(json)
我期待这个结果Php 插入数组作为对象属性(json),php,json,Php,Json,我期待这个结果 [ { "uId": "1", "firstName": "James", "lastName": "Bond", "task": [ { "task": "teaching" }, { "task": "tutoring" } ]
[
{
"uId": "1",
"firstName": "James",
"lastName": "Bond",
"task": [
{
"task": "teaching"
},
{
"task": "tutoring"
}
]
}
]
其中result1和result2如下所示:
$result1
$result2
[{"task":"teaching"},{"task":"tutoring"}]
我试过了
$result1[0]['tabs'] = $result2;
echo json_encode($result1);
但它显示了致命错误:无法将stdClass类型的对象用作数组您必须这样做
$result1='[{"uId":"1","firstName":"James","lastName":"Bond"}]';
$result2='[{"task":"teaching"},{"task":"tutoring"}]';
$arr1 = json_decode($result1,true);
$arr2 = json_decode($result2,true);
$arr1[0]['task'] = $arr2;
$finalJSON = json_encode($arr1);
echo $finalJSON;
输出:
[{"uId":"1","firstName":"James","lastName":"Bond","task":[{"task":"teaching"},{"task":"tutoring"}]}]
有意思。如果数组格式始终相同,也可以使用字符串函数更改输出:
$str = '[{"uId":"1","firstName":"James","lastName":"Bond"}]';
$combined = (trim($str, '}]').',"tasks":[{"task":"teaching"},{"task":"tutoring"}]'.'}]');
不需要更改为数组。您的意思是
$result1[0]['task']=$result2代码>对吗?输出不是我想要的,为什么有零?我可以通过$result['task]=$result2获得您的输出;不,您试图以数组的形式访问对象,因此出现了致命错误。如何将数组转换为字符串?您可以像这样使用内爆<代码>回波内爆(“”,$array)代码>但请注意,它在多维数组上不起作用;但是不能
$str = '[{"uId":"1","firstName":"James","lastName":"Bond"}]';
$combined = (trim($str, '}]').',"tasks":[{"task":"teaching"},{"task":"tutoring"}]'.'}]');