【发布时间】:2019-06-06 02:38:04
【问题描述】:
我在 php 中创建了以下对象数组
$treeData[] = (object) array(
"name"=> "A",
"children" => [
[
"name"=> "A1",
"children"=> [
[
"name"=> "A1.1",
"children"=> [
[
"name"=> "A1.1.1",
"children"=> [
....
我正在尝试根据以下条件在 A1.1.1 的子项中推送新值:
foreach ($treeData as $value) {
if ($value->name == 'A') {
$value->name[][] = (object) array(
"name"=> "ChildA",
"children"=> ""
);
break;
}
}
但它给了我一个错误
预期结果应与以下示例匹配:
$treeData[] = (object) array(
"name"=> "A",
"children" => [
[
"name"=> "A1",
"children"=> [ [
"name"=> "A1.1",
"children"=> [ [
"name"=> "A1.1.1",
"children"=> [
[
"name"=> "ChildA",
"children"=> [ [
"name"=> "ChildA1"
] ]
],
[
"name"=> "ChildA",
"children"=> [ [
"name"=> "ChildA2"
] ]
],
]
] ]
] ]
]
]);
我在这里做错了什么或以不同的方式实现这一目标的任何方式
我得到的错误:
“致命错误:未捕获的错误:字符串不支持 [] 运算符”
【问题讨论】:
-
您能否添加您遇到的错误,以便更全面地了解其执行情况? :)
-
我添加了错误
-
我认为您正在尝试将数组强制为字符串的对象属性。如果我没记错的话,你不想把它推到
$value->name,而是推到$value->children -
好的让我试试
-
@DiogoSanto 如果我想访问“name”=>“A1.1.1”中的孩子我应该怎么做?我已经写了以下 foreach 循环,但给了我错误 $testresult = []; foreach ($treeData as $value) { if($value->name == 'A'){ $testresult = $value->children->name; } }