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"}]'.'}]');