@phpgeeks

Страница 8420 из 8430
Доча
26.10.2018
09:51:53
Сам цикл вообще странный. Я понимаю, что будет на выходе, и просто рекомендую пересмотреть его)

Andrew
26.10.2018
09:51:54
я имею ввиду, что понял, что это перебор копии

Artur
26.10.2018
09:52:06
воооот, то что надо, спасибо
технически у тебя же там может быть не только массив

Google
Artur
26.10.2018
09:52:29
воооот, то что надо, спасибо
если is_array($expenses) то так

Доча
26.10.2018
09:54:10
К слову. Любое взаимодействие с исходным массивом не повлияет на сам цикл foreach

Andrew
26.10.2018
09:54:48
К слову. Любое взаимодействие с исходным массивом не повлияет на сам цикл foreach
собственно это не к слову, это именно то, о чем был вопрос

спасибл

Денис
26.10.2018
09:55:35
понятно
всё будет меняться, и если сделаешь unset следующего элемента, то он не попадёт в итерацию. а если добавишь новый, то он только на следующем foreach появится

Доча
26.10.2018
09:55:42


Andrew
26.10.2018
09:56:25
кажеться от версии пыха зависит или от настроек. Ну или я, что то упускаю

у меня явно режет ансет

Денис
26.10.2018
09:56:35
ничего не зависит

Andrew
26.10.2018
09:57:00
ок, вопрос. Такой пак данных на входе

Денис
26.10.2018
09:57:08
у тебя по итогу будет пустой массив, т.к. ты всё унсетишь

Andrew
26.10.2018
09:57:09
т.е. в $epxenses

Доча
26.10.2018
09:57:17


Google
Доча
26.10.2018
09:57:36
То есть даже если в начале цикла удалить весь массив, то все равно массив будет перебран, как будто полноценный

Andrew
26.10.2018
09:57:38
а такой

после



Доча
26.10.2018
09:57:55
Это неважно.

Совершенно. В твоем случае буде все тоже самое, что и в моем

Andrew
26.10.2018
09:58:19
т.е. на входе кол-во елементов массива меньше чем на выходе

Денис
26.10.2018
09:58:20
не может быть, он пустой будет на выходе

Доча
26.10.2018
09:58:20
У меня 5.4 или 5.6 php

Чекните в 7

Andrew
26.10.2018
09:58:31
хотя id уникальный

А не подскажие, есть что-то типа codepen для пыха? ( про sandbox в курсе, важно возможность именно шарить код )

Artur
26.10.2018
10:01:45
вы бы хотябы сандбокс с мультверсионностью для себя открыли

Artur
26.10.2018
10:03:52
http://sandbox.onlinephpfunctions.com/code/aeb5163a4ce42255e10733148373536cc49e5556

Нет необходимости
как тебе такое, илон

работает с 5.5

даже с 5.4

Доча
26.10.2018
10:05:26
Спасибо за sandbox) Код тоже прек. Я только сбился с пути разговора

Artur
26.10.2018
10:05:54
упс случайно повесил сандбокс экран :(

Google
Доча
26.10.2018
10:06:16
Я же не про версии говорил вообще. Просто кто то привел в пример, что на разных PHP может быть разный исход. Я и написал, что чекните в PHP 7 кому надо

Artur
26.10.2018
10:06:38
независимо от версии но зависимо от входного параметра в foreach

во всяких ооп фреймыворках принято итерировать объекты

и это могла бы быть коллекция

Andrew
26.10.2018
10:08:29
вообщем

Артур Евгеньевич
26.10.2018
10:08:32
мы не делаем коллекци

Andrew
26.10.2018
10:08:35
оно будет менять исходный массив ребят

Артур Евгеньевич
26.10.2018
10:08:36
нах они нужны в пхп

Andrew
26.10.2018
10:08:56
http://sandbox.onlinephpfunctions.com/code/cda0af6f921ff284b9b466c334318296b014a754

Artur
26.10.2018
10:09:04
нах они нужны в пхп
чтобы функции применять

Артур Евгеньевич
26.10.2018
10:09:06
если только заморочитсья с типизацие и в методе addToCollection проверять тип объекта?

Andrew
26.10.2018
10:09:15
исходный массив 3 елемента. На выходе 1

Артур Евгеньевич
26.10.2018
10:09:16
но это заебешься столько кода писать

Andrew
26.10.2018
10:09:22
т.к. 2 ансета и 1 пуш

Денис
26.10.2018
10:09:35
конечно будет

Andrew
26.10.2018
10:10:01
ну, мне тут безбожно соврали что нет. И что в переборке клон массива ;(

Artur
26.10.2018
10:10:22
если только заморочитсья с типизацие и в методе addToCollection проверять тип объекта?
в ларе(как и везде наверняка) есть кастомные коллекции. ч могу решить задачу не только как ->toArray() но и ->getCalcSomeValue() или ->toExport() - вывод куда либо а не для внутреннего пользования

Денис
26.10.2018
10:10:45
ну это же не логично один участок памяти использовать два раза

Google
Артур Евгеньевич
26.10.2018
10:10:57
>getCalcSomeValue() так функцию калькуляции один хер сам описываешь

Artur
26.10.2018
10:11:07
исходный массив 3 елемента. На выходе 1
еще раз: можно сделать хоть $arr=null; хоть $arr='string'

Доча
26.10.2018
10:11:13
Либо мы говорим с тобой о разных вещах

Артур Евгеньевич
26.10.2018
10:11:16
точно также я и по массиву могу пройтись array_map

Доча
26.10.2018
10:11:19
http://sandbox.onlinephpfunctions.com/code/cda0af6f921ff284b9b466c334318296b014a754

Доча
26.10.2018
10:12:05
Во время цила foreach любые манипуляции с исходником в рамках цила бесполезны. Они не меняют исход цикла За пределами цила массив будет уже другм, так как мы правили его в цикле

Artur
26.10.2018
10:12:07
может тебе нужен total count а не сами элементы

у тебя 1 подход и разные запросы

Andrew
26.10.2018
10:12:19
еще раз: можно сделать хоть $arr=null; хоть $arr='string'
окей. Но может это ссылка просто. И когда я пушу ссылку, а не пытаюсь переназначить клон, то это влияет ( но я хз )

Artur
26.10.2018
10:12:27
или пакетное получение с бесконечным форич

Артур Евгеньевич
26.10.2018
10:12:31
корчое типизированный коллекции заибись

Andrew
26.10.2018
10:12:36
мне? Мне только елементы

Артур Евгеньевич
26.10.2018
10:12:43
коллекции в пхп...не очень заибись, но норм если хочется

Andrew
26.10.2018
10:12:45
с айдишками вместо ключей

Игорь
26.10.2018
10:14:41
В чём отличие ленивой инициализации от кэширования? Как я понял ленивая инициализация - запись в переменную данных при обращении к тяжёлой функции и дальнейшее использование этой переменной при повторном обращении к тяжёлой функции

Денис
26.10.2018
10:15:23
читать как foreach (orig_array as copy_array)

Google
Artur
26.10.2018
10:15:49
Артур Евгеньевич
26.10.2018
10:17:02
да! ты опять сделал это!
ну термин то популярный и полезный!

https://ru.wikipedia.org/wiki/%D0%9C%D0%B5%D0%BC%D0%BE%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D1%8F

Игорь
26.10.2018
10:17:19
то что ты назвал называется МЕМОИЗАЦИЯ
вообще изначально я читал про паттерн "заместитель")

Максим
26.10.2018
10:17:22
foreach($arr as &$item){ }

Артур Евгеньевич
26.10.2018
10:17:37
вообще изначально я читал про паттерн "заместитель")
да все верно, чем то похоже на прокси

кеширующий прокси,

я вот тоже для себя провел параллель что классическе кеширвоание напоминает декоратор, а мемоизация - прокси

Andrew
26.10.2018
10:18:21
Меняют, если передать указатель.
так массивы это ссылки?

Artur
26.10.2018
10:18:57
В чём отличие ленивой инициализации от кэширования? Как я понял ленивая инициализация - запись в переменную данных при обращении к тяжёлой функции и дальнейшее использование этой переменной при повторном обращении к тяжёлой функции
lazy load самое банальное - ты мождешь на фронт отдать не массив всех возможных значений из базы а объекты в коллекции при этом на момент отдачи данных во вьюху ты мог даже не сходить в базу(отложить до момента когда данные реально понадобятся). причина - не факт что на фронте нужно вообще все

Максим
26.10.2018
10:19:05
так массивы это ссылки?
foreach делает копию элемента. И она, кстати, остаётся после цикла.

Andrew
26.10.2018
10:19:45
foreach делает копию элемента. И она, кстати, остаётся после цикла.
копию елемента, который попадет в перебор на каждую итерацию. Это я знаю

вопрос в самом массиве

Artur
26.10.2018
10:19:59
так массивы это ссылки?
массивы без модификатора всегда копии

Andrew
26.10.2018
10:20:15
но они ссылки?

Artur
26.10.2018
10:20:21
о_0

Максим
26.10.2018
10:20:46
копию елемента, который попадет в перебор на каждую итерацию. Это я знаю
Ну вот и получается, если эту копию менять как-то, то изначальный массив не изменится, но если передать ссылкой через &, то будет копироваться не сам элемент, а только ссылка на него, что позволит менять массив.

Ссылка \ поинтер \ ярлык \ указатель.

Страница 8420 из 8430