Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
В языке PHP есть удобная конструкция чтобы пробежаться по всему массиву: Код: php 1. 2. 3. А можно во время выполнения получить порядковый номер элемента к которому обращаюсь без создания собсвенного счётчика? Конечно, при нескольких строчках не сложно дописать: Код: php 1. 2. 3. 4. 5. но ведь foreach сам знает к какому элементу обращается, может можно получить его порядковый номер без введения новых переменных? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 16:25 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
InterSky, документацию нынче не модно читать? Код: php 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:03 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Причём тут индексный ключ? Я спросил про порядковый номер элемента в массиве... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:12 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Нет, точно документацию нынче читать не модно :) Вот спросят Вас на собеседовании о том, что такое массив в PHP, вот Вы в лужу и сядете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:16 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Так надеюсь понятнее будет: Код: php 1. 2. 3. 4. 5. Если хотите, то проверьте на http://phpfiddle.org/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:27 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Я по секрету скажу foreach даже не с массивом работает, а с его копией. По крайней мере так было в 1999 году, когда я читал документацию. Или что-то изменилось за эти годы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:28 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
InterSky, может Вы по секрету ещё и код инициализации своего массива покажете? А то прям интрига :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:29 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Вы наверно забываете что у вас массив может быть объявлен как Код: php 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:32 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
InterSky, у меня массив объявлен так как я написал выше :) А у Вас? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:36 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Ладно, не будем гадать. Вариант номер два: Код: php 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:40 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Мне кажется я написал... Или вы уже поняли свою ошибку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:42 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Номер элемента в массиве является как бы бессмысленной вещью, поскольку массивы могут быть обычные, ассоциативные, разряженные, смешанные. А после сортировки вообще получите другой элемент. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:50 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
"По поводу знает к какому элементу обращаться"-это не так. foreach просто сдвигает указатель в стеке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:53 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
InterSkyМне кажется я написал... Или вы уже поняли свою ошибку?Прямого ответа я не увидел :) А ошибка моя в том, что вообще вступил в диалог с таким занудой, как Вы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:55 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Я понял что вы хотите найти конкретное решени для конкретно моего примера (хотя я писал: " Конечно, при нескольких строчках не сложно дописать ", намекая что код большой и не из-за хорошей жизни приходится искать решения как избавиться от лишних переменных). Признаю что Вы нашли очень красивое решение задачи... Но ведь я могу и сам использовать $key в своём foreach: Код: php 1. 2. 3. 4. 5. 6. В таком случае можно избавиться от переменной $n? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 17:58 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
напишите свою функцию и не парьтесь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 18:05 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
kunaksergey"По поводу знает к какому элементу обращаться"-это не так. foreach просто сдвигает указатель в стеке.Причём не просто "в стеке массива", а как уже говорил - сдвигает указатель в стеке КОПИИ массива (в то время как указатель самого массива не меняется). По этому и возник вопрос к гуру, а можно ли получить какую-нибудь информацию в процессе работы foreach. А мне в ответ занудно мануал скармливали... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 18:14 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
InterSkyПричём не просто "в стеке массива", а как уже говорил - сдвигает указатель в стеке КОПИИ массива (в то время как указатель самого массива не меняется). По этому и возник вопрос к гуру, а можно ли получить какую-нибудь информацию в процессе работы foreach.А какой смысл выводить во внешнюю по отношению к функции среду значения внутренних её переменных? Под отладчиком наверняка видно будет, но это не то, что Вам надо, скорей всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 18:21 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
InterSkyсдвигает указатель в стеке КОПИИ массива (в то время как указатель самого массива не меняется)Есть некоторое сомнение на этот счёт. Копия - дело накладное. Даже после $b = $a копия значения переменной не будет создана до тех пор, пока $b не будет изменена. Возможно, в далёком 1999 году и работали с копией, но сейчас вряд ли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 18:38 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
Да, действиетельно. Посмотрел, раньше было: автор Примечание: Обратите также внимание, что foreach работает с копией специфицированного массива, а не с самим массивом, следовательно, указатель массива не изменяется, как при работе конструкции each(), и изменения в возвращаемом элементе массива не влияют на массив-оригинал. а теперь: авторТак как оператор foreach опирается на внутренний указатель массива, его изменение внутри цикла может привести к непредсказуемому поведению. То есть, раньше была копия массива, а теперь копия указателя. Впрочем это не меняет сути вопроса. От развивающегося языка программирования ожидаешь не столько изменения логики привычных функций сколько добавление самих этих функций. И за 15 лет вполение ожидаемой была бы функция счётчика, ведь часто при прогонке массива используется нумерация списка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 20:44 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
InterSkyа теперь: авторТак как оператор foreach опирается на внутренний указатель массива, его изменение внутри цикла может привести к непредсказуемому поведению. То есть, раньше была копия массива, а теперь копия указателя.Неа, не копия. Извольте поглядеть на вывод: Код: php 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 21:16 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
vkle, Удивлён. Признаю вашу правату. Но это означает что тем более просто было бы сделать системную функцию показывающую порядковый нормер текущего элемента в массиве. Причём универсальную, что для foreach, что для next. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 23:12 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
InterSky, Не только для них, с указателем массива работают и другие функции. Однако, пол-пути к Вами желаемому разработчики уже сделали, написав функции key() и current(). Видимо, посчитали это достаточным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 23:36 |
|
||
|
номер получаемого элеменат из foreach
|
|||
|---|---|---|---|
|
#18+
InterSkyvkle, Удивлён. Признаю вашу правату. Но это означает что тем более просто было бы сделать системную функцию показывающую порядковый нормер текущего элемента в массиве. Причём универсальную, что для foreach, что для next. Если не нравится стандартное поведение, реализуйте свой итератор http://php.net/manual/ru/language.oop5.iterations.php ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.11.2015, 23:38 |
|
||
|
|

start [/forum/topic.php?fid=23&fpage=53&tid=1461425]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
30ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 226ms |
| total: | 325ms |

| 0 / 0 |
