如何在PHP中将对象添加到具有特定对象的数组中?
这是我的数组如何在PHP中将对象添加到具有特定对象的数组中?,php,arrays,object,Php,Arrays,Object,这是我的数组$table: array:2 [▼ 0 => Documents {#1523 ▼ -id: 55 -uuid: "0b4d53cba2" -name: "neu" -timestamp: DateTime @1570445917 {#1517 ▶} -pages: Pages {#1019 ▶} -products: PersistentCollection {#1512 ▶} -projects: Persist
$table
:
array:2 [▼
0 => Documents {#1523 ▼
-id: 55
-uuid: "0b4d53cba2"
-name: "neu"
-timestamp: DateTime @1570445917 {#1517 ▶}
-pages: Pages {#1019 ▶}
-products: PersistentCollection {#1512 ▶}
-projects: PersistentCollection {#1509 ▶}
-members: PersistentCollection {#1506 ▶}
-documents: PersistentCollection {#1526 ▶}
}
1 => Documents {#1521 ▼
-id: 56
-uuid: "d87da82cde"
-name: "zwei"
-timestamp: DateTime @1570453219 {#1535 ▶}
-pages: Pages {#1019 ▶}
-products: PersistentCollection {#1532 ▶}
-projects: PersistentCollection {#1519 ▶}
-members: PersistentCollection {#1522 ▶}
-documents: PersistentCollection {#1488 ▶}
}
]
我尝试使用对象uuid
0b4d53cba2
将值为1234
的对象bar
添加到数组中:
if (isset($table->uuid == "0b4d53cba2")){
$table->{"bar"} = '1234';
}
但是它没有被添加。它没有被添加,因为您的if语句不正确
if (isset($table->uuid == "0b4d53cba2"))
如果uuid
是0b4d53cba2
,则它将执行isset(true)
(如果不是,则执行isset(false)
)
您必须首先检查是否设置了uuid
,然后检查值:
if (isset($table->uuid) && $table->uuid == "0b4d53cba2")
工作解决方案:
foreach($table as &$arr){
if($arr->getUuid() == "0b4d53cba2"){
$arr->{"bar"} = '1234';
}
}
我测试了你的方法。它没有被添加。我不需要foreach?你当然需要foreach。我刚刚更正了您的if语句名为
文档的类的定义是什么,因为它可能有访问数据的方法(除非定义为公共)。听起来好像您需要执行if($table->getUuid()==“0b4d53cba2”){
,然后在设置值时(可能)$table->setBar(“1234”);