如何在php中迭代数组时从单个类创建对象的不同实例


How to create differenet instances of an object from a single class while iterating an array in php?

我有这个数组的原则处理多对多的形式,并将其保存到数据库,但我的代码不工作,因为只有一个对象的实例被创建,然后通过数组迭代时重写:

$i = '1';
foreach ($myarray as $key => $value) {
  foreach ($value as $key2 => $value2) {
    $addressObject = new 'Entities'Clientaddress();
    foreach ($value2 as $key3 => $value3) {
      $addressObject ->$key3 = $value3;
      $account->getAddresses()->add($addressObject);
      $this->em->persist($addressObject );
      $i = $i + '1';
}}}

如果我的方法是错误的,什么是正确的方法来创建一个对象没有明确地定义它?

你可以在循环中创建一个新的,看起来对下一个编码器来说更"干净"/更清晰,除非构造函数非常重,不需要重复。那会得到我的投票。如果需要对象的副本,使用clone:

  ....
  foreach ($value2 as $key3 => $value3) {
      $curAdress = clone $addressObject;
      $curAdress->$key3 = $value3;
      $account->getAddresses()->add($curAdress);
      $this->em->persist($curAdress);

创建这些对象的数组:

    $addressObject = array();
    $i = '1';
    foreach ($myarray as $key => $value) {
         foreach ($value as $key2 => $value2) {
             // create array of objects here
             $addressObject[$key2] = new 'Entities'Clientaddress();
             foreach ($value2 as $key3 => $value3) {
                 $addressObject[$key2] ->$key3 = $value3;
                 $account->getAddresses()->add($addressObject[$key2]);
                 $this->em->persist($addressObject[$key2] );
                 $i = $i + '1';
             }
         }
    }

在最后一个嵌套循环中创建对象。

$i = '1';
 foreach ($myarray as $key => $value)
{ 
 foreach ($value as $key2 => $value2)
 { 
  foreach ($value2 as $key3 => $value3)
 {
   //create your object here
   $addressObject = new 'Entities'Clientaddress();  
   $addressObject ->$key3 = $value3; 
   $account->getAddresses()->add($addressObject); 
   $this->em->persist($addressObject ); 
   $i = $i + '1'; 
  }
 }
}