Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Дублирование массива с удалением оригинала


Автор: IZ@TOP 30.5.2005, 12:07
САБЖ.

У меня есть такой вариант:

Код

function array_copy_remove(&$arrayCopy, &$arrayRemove) {

    $arrayCopy = $arrayRemove;
    $arrayRemove = array();

}

array_copy_remove($arrayCopy, $ArrayRemove);



Может есть вариант попроще?

Автор: Irokez 30.5.2005, 12:12
а куда еще проще?

Автор: IZ@TOP 30.5.2005, 13:14
Irokez, да я думал есть встроенная функция... оказалось что таковой нету smile Хотя конечно можно свою заюзать...

Автор: Opik 30.5.2005, 13:28
Код

$new_array = $array;
unset($array);

smile

Автор: Mal Hack 30.5.2005, 16:23
А нафига делать копию, а затем удалять оригинал?
Почему сразу с оригиналом работать нельзя?

Автор: IZ@TOP 30.5.2005, 16:36
Mal Hack, думаю что это моя собственная ненужная заморочка.
Есть объект метод которого, получает некие данные, после чего записывает их в временный массив (свойство объекта), он может быть перезаписан, и соответственно если юзать это свойство, можно потерять данные. Вот я и размышляю обо всяких ненужных мелочах, типа, что будет если такой метод юзать. Хотя наверное проще из этого метода возвращать массив и назначать его уже внешнему массиву вне объекта.

В общем такие заморочки.
Добавлено @ 16:37
Opr, ага... а теперь представь что у тебя в 20 местах такое твоиться smile)))

Автор: Mal Hack 30.5.2005, 16:42
ИМХО, это уже неправильное проектирование...
Судя по твоим словам тяжело понять что и как...
А вот:
Цитата
Дублирование массива с удалением оригинала

просто лишние операции.

опиши суть более детально, что-ть придумаем.

Автор: Irokez 30.5.2005, 16:45
IZ@TOP это ты пытаешься сделать private поле? smile

Автор: IZ@TOP 30.5.2005, 16:47
Есть методы объекта предоставляющие некоторые данные, другой объект пользуется его функциями для выборки этих данных для дальнейшего их использования. Так вот, некоторые из этих данных могут использоваться однократно, а некоторые постоянно. Вот я и думаю как с ними лучше поступать. Хочется чистоты, чтобы лишнее исчезало. Но с другой стороны какая-то часть этих данных может понядобиться.

По всем канонам мне кажется что я немного отступил от верного направления в разработке. Один класс занимается чисто збором глобальных данных используемых всегда чтобы объект конструктор мог ими воспользоваться. Далее это все уже попадет шаблонизатору.
Добавлено @ 16:48
Irokez, нет. Я до РНР 5 пока не дожил. Пока только тестирую.

Жду ответов.
Побег домой, вечером напишу.

Автор: Mal Hack 30.5.2005, 17:01
Пересмотри структуры классов.

Цитата(IZ @ 30.5.2005, 17:47)
некоторые из этих данных могут использоваться однократно

Как параметры в функцию.

Цитата(IZ @ 30.5.2005, 17:47)
а некоторые постоянно.

Можно как глобальные объявить.

но удалять явно ничего не надо.

Автор: IZ@TOP 30.5.2005, 18:47
Mal Hack, значить брошу затею эту smile На счет структуры: хотелось отделить логику от данных... хотя мне начинает капзаться что я не там и не то отделяю smile

Автор: Mal Hack 30.5.2005, 20:04
Цитата(IZ @ 30.5.2005, 19:47)
хотелось отделить логику от данных...

А что в твоем понимании "логика" и что "данные". Я несколько тут не понимаю.

Автор: IZ@TOP 30.5.2005, 21:17
Mal Hack, ну как мне кажется в данном случае, логика, это алгоритм работы системы в целом, как она должна поступать при определенных обстоятельствах и как реагировать на те или иные события. Данные же, представляются для меня как некий интерфейс, который должен предоставлять простейший механизм доступа к этим самым данным.
Добавлено @ 21:18
Mal Hack, прошу камнями не кидать, если я в чем то не прав, выскажи свое представление о данном вопросе "что есть логика и что есть данные?".

Автор: Mal Hack 30.5.2005, 21:42
IZ@TOP я просто из того что ты писал не мог понять что ты отчего хочешь отделить. Интуитивно, я конечно Понимаю, но хочется помочь а для этого надо понять суть задачи...
У меня сегодня голова мутная какая-то. Устал как собака..

Цитата(IZ @ 30.5.2005, 22:17)
Mal Hack, прошу камнями не кидать, если я в чем то не прав, выскажи свое представление о данном вопросе "что есть логика и что есть данные?".

Я не гововрю, что ты не прав. Я хочу понять что у тебя в системе чем является...

Цитата(IZ @ 30.5.2005, 22:17)
логика, это алгоритм работы системы в целом,

Цитата(IZ @ 30.5.2005, 22:17)
Данные же, представляются для меня как некий интерфейс,

Я обычно как делаю. Грубо говоря. Модуль работы (ядро системы), модуль интерфейса (шаблонизатор) и модуль данных. Он у меня правда делится на: данные в SQL модуле при разборке результата SQL запросов в DB классе и данные глобальные: лэнги, конфиги, URL посре парсера запроса.

Автор: Irokez 30.5.2005, 21:49
IZ@TOP по-моему get метод - самое оптимальное

Автор: IZ@TOP 30.5.2005, 22:01
Цитата(Mal @ 30.5.2005, 22:42)
Я обычно как делаю. Грубо говоря. Модуль работы (ядро системы), модуль интерфейса (шаблонизатор) и модуль данных. Он у меня правда делится на: данные в SQL модуле при разборке результата SQL запросов в DB классе и данные глобальные: лэнги, конфиги, URL посре парсера запроса.

Оно самое.


Цитата(Mal @ 30.5.2005, 22:42)
У меня сегодня голова мутная какая-то. Устал как собака..

Результатом этой мути и явилась данная тема в моем восполенном работой мозгу.


Цитата(Irokez @ 30.5.2005, 22:49)
IZ@TOP по-моему get метод - самое оптимальное

ЛОЛ smile ты это о чем??? smile

Автор: Mal Hack 30.5.2005, 22:05
Если как бы кратно, то данные от пользователя - GET, POST, URI, COOKIE, LNG, CONF - глобальные. Даннеые из базы в $B -> DataObj[].

Автор: Irokez 30.5.2005, 22:15
Цитата(IZ @ 30.5.2005, 22:01)
ЛОЛ smile ты это о чем??? smile

хм.. наврное я сегодня тоже туплю ...
у тебя есть некий класс, который работает с некими данными, тебе нужно получить доступ к этим данным извне, но если ты будешь их записывать в поле класса, то ты боишься что эти данные можно испортить (т.к. в пхп4 нет private переменных класса). Если я правильно понял, то поступить нужно как обычно - создав метод get, который получает данные и возвращает их, таким образом доступ к данным есть, а испортить их нельзя ..
по-моему я все таки что то не то написал .. smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)