【问题标题】:How can I add an object to an array with a specific object in PHP?如何在 PHP 中将对象添加到具有特定对象的数组中?
【发布时间】:2019-10-08 07:33:16
【问题描述】:

这是我的数组$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 对象bar 与值1234 添加到数组中:

  if (isset($table->uuid == "0b4d53cba2")){
      $table->{"bar"} = '1234';
    }

但是没有添加。

【问题讨论】:

  • Documents的定义是什么,因为它可能有访问数据的方法(除非它被定义为public)。
  • 听起来好像你需要做if ($table->getUuid() == "0b4d53cba2"){,然后当你设置值时(也许)$table->setBar( '1234' );

标签: php arrays object


【解决方案1】:

工作解决方案:

  foreach($table as &$arr){
      if($arr->getUuid() == "0b4d53cba2"){
        $arr->{"bar"} = '1234';
      }
    }

【讨论】:

    【解决方案2】:

    没有添加,因为你的if语句不正确

    if (isset($table->uuid == "0b4d53cba2"))
    

    如果uuid0b4d53cba2,那么它将执行isset(true)(如果不是,它将执行isset(false))。

    您必须先检查是否设置了uuid,然后检查值:

    if (isset($table->uuid) && $table->uuid == "0b4d53cba2")
    

    【讨论】:

    • 我测试了你的方法。它没有被添加。我不需要 foreach?
    • 你当然需要foreach。我刚刚更正了你的 if 语句
    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2020-10-27
    • 2021-12-30
    • 2015-09-16
    • 2020-07-06
    • 2021-12-27
    • 2017-11-14
    相关资源
    最近更新 更多