php5 и array_unshift для классов на 4 ок

ZloiJoker

Новичок
php5 и array_unshift для классов на 4 ок

while($childs->fetch())
{
$child = $childs;
$child->level = $cur->level+1;
array_unshift($notvisited,$child);
Var_Dump::display(print_r($child)) ;
Var_Dump::display(print_r($notvisited)) ;
}

а теперь вывод: ( Var_Dump )

PageGroup Object ( [__table] => z_pages [pg_id] => 25 [pg_group] => 0 [pg_nick] => extsearch [pg_name] => Расширенный поиск [pg_name_en] => Extended searching [pg_info] => [pg_info_en] => [pg_description] => [pg_keywords] => [pg_file] => [pg_doc] => [pg_pos] => [pg_isactive] => [prefix] => pg_ [levelfields] => Array ( [0] => pg_group ) [count] => [limit] => [pos] => [old] => [_DB_DataObject_version] => @version@ [N] => 5 [_database_dsn] => mysql://root:mao@localhost/db_treid [_database_dsn_md5] => 84a268dfff2241208958e5e8409379aa [_database] => db_treid [_DB_resultid] => 2 [_link_loaded] => [_join] => [_lastError] => [_database_keys] => Array ( [0] => Array ( [0] => pg_id ) ) [level] => 1 )

bool true

Array ( [0] => PageGroup Object ( [__table] => z_pages [pg_id] => 25 [pg_group] => 0 [pg_nick] => extsearch [pg_name] => Расширенный поиск [pg_name_en] => Extended searching [pg_info] => [pg_info_en] => [pg_description] => [pg_keywords] => [pg_file] => [pg_doc] => [pg_pos] => [pg_isactive] => [prefix] => pg_ [levelfields] => Array ( [0] => pg_group ) [count] => [limit] => [pos] => [old] => [_DB_DataObject_version] => @version@ [N] => 5 [_database_dsn] => mysql://root:mao@localhost/db_treid [_database_dsn_md5] => 84a268dfff2241208958e5e8409379aa [_database] => db_treid [_DB_resultid] => 2 [_link_loaded] => [_join] => [_lastError] => [_database_keys] => Array ( [0] => Array ( [0] => pg_id ) ) [level] => 1 ) )

bool true

PageGroup Object ( [__table] => z_pages [pg_id] => 5 [pg_group] => 0 [pg_nick] => contacts [pg_name] => Контакты [pg_name_en] => Contacts [pg_info] => [pg_info_en] => [pg_description] => [pg_keywords] => [pg_file] => [pg_doc] => [pg_pos] => [pg_isactive] => [prefix] => pg_ [levelfields] => Array ( [0] => pg_group ) [count] => [limit] => [pos] => [old] => [_DB_DataObject_version] => @version@ [N] => 5 [_database_dsn] => mysql://root:mao@localhost/db_treid [_database_dsn_md5] => 84a268dfff2241208958e5e8409379aa [_database] => db_treid [_DB_resultid] => 2 [_link_loaded] => [_join] => [_lastError] => [_database_keys] => Array ( [0] => Array ( [0] => pg_id ) ) [level] => 1 )

bool true

Array ( [0] => PageGroup Object ( [__table] => z_pages [pg_id] => 5 [pg_group] => 0 [pg_nick] => contacts [pg_name] => Контакты [pg_name_en] => Contacts [pg_info] => [pg_info_en] => [pg_description] => [pg_keywords] => [pg_file] => [pg_doc] => [pg_pos] => [pg_isactive] => [prefix] => pg_ [levelfields] => Array ( [0] => pg_group ) [count] => [limit] => [pos] => [old] => [_DB_DataObject_version] => @version@ [N] => 5 [_database_dsn] => mysql://root:mao@localhost/db_treid [_database_dsn_md5] => 84a268dfff2241208958e5e8409379aa [_database] => db_treid [_DB_resultid] => 2 [_link_loaded] => [_join] => [_lastError] => [_database_keys] => Array ( [0] => Array ( [0] => pg_id ) ) [level] => 1 ) [1] => PageGroup Object ( [__table] => z_pages [pg_id] => 5 [pg_group] => 0 [pg_nick] => contacts [pg_name] => Контакты [pg_name_en] => Contacts [pg_info] => [pg_info_en] => [pg_description] => [pg_keywords] => [pg_file] => [pg_doc] => [pg_pos] => [pg_isactive] => [prefix] => pg_ [levelfields] => Array ( [0] => pg_group ) [count] => [limit] => [pos] => [old] => [_DB_DataObject_version] => @version@ [N] => 5 [_database_dsn] => mysql://root:mao@localhost/db_treid [_database_dsn_md5] => 84a268dfff2241208958e5e8409379aa [_database] => db_treid [_DB_resultid] => 2 [_link_loaded] => [_join] => [_lastError] => [_database_keys] => Array ( [0] => Array ( [0] => pg_id ) ) [level] => 1 ) )


после второго прохода $notvisited оба элемента массива перезаписываются.. хотя должен был добавится второй
 

ZloiJoker

Новичок
проблема вот в чем:
<?php
class test {

var $a2;
var $a3;

}

$obj = new test;
$obj1 = new test;
$obj_mass[]=$obj;

$obj1->a2=2;
$obj1->a3=2;
array_unshift($obj_mass,$obj1);
$obj1->a2=3;
$obj1->a3=3;
array_unshift($obj_mass,$obj1);
print_r($obj_mass);
?>

на выходе:
Array ( [0] => test Object ( [a2] => 3 [a3] => 3 ) [1] => test Object ( [a2] => 3 [a3] => 3 ) [2] => test Object ( [a2] => [a3] => ) )

0 и 1 элимент получились равные 3
а если этот код запустить на пхп4 то 0 будет равен 3 а первый 2

Как это исправить ? (надо чтобы добавились сами значения .. а сейчас добавляются указатели )

вот результат работы на 4 пхп
Array ( [0] => test Object ( [a2] => 3 [a3] => 3 ) [1] => test Object ( [a2] => 2 [a3] => 2 ) [2] => test Object ( [a2] => [a3] => ) )
 

Necromant

Новичок
Клонирование объектов

Если объекты присваиваются и передаются по ссылке, то вам нужно как-то создавать и копии объектов. Для этого используйте метод __clone.

http://detail.phpclub.ru/article/intro_php5
 
Сверху