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