У меня возникла проблема с извлечением кода PHP из базы данных с использованием PDO, и мне было интересно, сможет ли кто-нибудь помочь мне в этом. У меня есть класс, который извлекает события из базы данных и возвращает результат в массиве.PHP array_merge заменяет существующие значения массива
Соответствующая часть кода:
$seminars = array();
$sql = 'select * from seminars';
$stmt = $this->dbconn->query($sql);
$stmt->setFetchMode(PDO::FETCH_INTO, new SeminarEvent);
foreach($stmt as $seminar) {
echo "<p>Seminar Row: ".var_dump($seminar)."</p>"; // Prints the unique row
$seminars[] = $seminar;
echo "<p>";var_dump($seminars);echo "</p>"; // Debug
}
(SeminarEvent класс я написал, содержащий соответствующие поля с добытчиками и сеттеров, которые были включены в заголовок)
Я читать в документах на php.net является то, что $ array [] = $ elem и array_push ($ array, $ elem) оба добавляют $ elem к END массива, поэтому я попытался использовать оба, и я получаю то же самое результат:
Часть, которая для меня проблема, заключается в добавлении $ семинара к массиву repl используя ВСЕ значения во всем массиве. Это также происходит при использовании array_merge. Результат var_dump показывает, что размер массива увеличивается на 1 (как и ожидалось), но все значения заменяются вновь вставленным элементом каждый раз, когда я добавляю элемент в массив. Я пробовал этот код на другом сервере, и получаю точно такой же результат.
Я пропустил что-то простое здесь?
EDIT: Я добавил дополнительную строку, чтобы распечатать текущий семинар $ из цикла foreach, и каждый раз каждый вывод будет отличаться, поэтому $ workshop правильно ссылается на каждую строку из инструкции, однако массив $ seminar содержащий только последний элемент, добавленный в массив.
Я был озадачен тем, что код работал до недавнего времени, но добавление клона, как вы предложили, решило проблему. Спасибо! –