Я уже четвертый раз пытаюсь написать этот вопрос, поэтому, пожалуйста, потерпите меня.
У меня есть объект PHP, полученный из запроса к БД, который возвращает следующие данные:
[1] => stdClass Object
(
[eventId] => 11
[eventName] => Second Event
[...]
[eventChildren] => Array
(
[0] => stdClass Object
(
[childId] => 8
[childName] => Jane Doe
[...]
[gifts] => Array
(
[0] => stdClass Object
(
[giftId] => 73
[giftName] => My two front teeth
[childId] => 8
[userId] => 1
[eventId] => 11
)
[1] => stdClass Object
(
[giftId] => 74
[giftName] => Wasps
[childId] => 8
[userId] => 1
[eventId] => 11
)
)
)
)
)
)
Затем я запускаю массив циклов foreach
, чтобы сравнить userId
из массива gifts
с userId
, хранящимся в файле cookie сеанса.
Из этих циклов я создаю массив детей и подарков, выбранных пользователем.
Проблема в том, что это переписывает мой основной объект, а не создает новый.
Петли:
$user = $this->session->userdata('user');
$tempEvents = $events;
$userSelection = array();
$flag = FALSE;
foreach ( $tempEvents as $i => $event )
{
if ( $i == 0 )
{
foreach ( $event->eventChildren as $child )
{
$userGift = array();
foreach ( $child->gifts as $gift )
{
if ( $gift->userId == $user['userId'] )
{
array_push($userGift, $gift);
$flag = TRUE;
}
}
$tempChild = $child;
$tempChild->gifts = $userGift;
if ( $flag )
{
array_push($userSelection, $tempChild);
$flag = FALSE;
}
}
}
}
Если I print_r($events);
, то отображается отредактированный список, а не полный список событий. Есть ли способ создать дубликат объекта и отредактировать его, а не редактировать исходный объект?