Есть ли способ итерации по массиву, но выполнение операции для каждого другого элемента? ie Если у меня есть массив из 13 элементов, как мне сделать что-то только для элементов 2,4,6,8,10 и 12?выборочная итерация массива в php
ответ
исправить cletuses ответить на более высокой скорости и исправить опечатки:
for ($i = 1, $j = count($array); $i < $j; $i += 2) {
// code
}
for ($i=1; $i<sizeof($array); $i+=2) {
// do stuff to $array[$i]
}
Вы можете интегрировать его в петлю Еогеасп тоже:
$i = 0;
foreach ($array as $v) {
if ($i++ & 1) continue;
// do stuff to $v
}
Примечание:$i & 1
эквивалентно ($i % 2) == 1
(или просто $i % 2
).
Должна ли последняя часть утверждения быть равна $ i + = 2? – musoNic80
Не уверен, что я получу пример foreach. Не могли бы вы объяснить это мне немного проще ?! – musoNic80
В основном цикл foreach(), в отличие от обычного цикла for(), не имеет индексного счетчика, поэтому $ i используется как суррогатный индекс. Он увеличивается на каждую итерацию. $ i & 1 вернет true для значений 1, 3, 5, 7. Он начинается с 0, поэтому он возвращает true для каждого второго элемента (что означает пропустить их). – cletus
foreach($array as $val) {
if(($i++ % 2) == 0) {
...do stuff here...
}
}
Вот как бы я это сделал, ну, кроме брекетов. Логика мертва проста, и это отражает это хорошо, плюс это упрощает расширение с помощью else без перезаписи логики цикла. – Kris
Ответы велики, спасибо. Могу ли я добавить пример реального мира? У меня есть массив, который имеет 2 элемента для каждого дня недели. (Нумерация начинается с 0). Мне нужен цикл, который будет делать что-то в каждый ДЕНЬ не для каждого элемента. Как я могу использовать ответы, которые вы дали, чтобы достичь этого? PS Там еще нет кода для публикации, я просто пытаюсь его выработать первым !!! – musoNic80
, если ваш массив тоже похож $ array = array ('mon1', 'mon2', 'tue1', 'tue2' ... 'fri2'); и всегда следует за отдельным шаблоном, тогда вы можете использовать этот код, как написано. Если вы хотите удостовериться, что он поражает каждый день, вам нужно как-то его проверить. Трудно сказать, не зная, что происходит, и чего вы хотите. –
Еще одна вариация на ответы уже вывешенные ... Похоже на ответ Фила Картера. Если массив имеет числовой индекс, вы можете использовать его в foreach вместо управления отдельной переменной счетчика:
foreach ($array as $i => $v) {
if (! ($i % 2)) {
// do stuff to $v
}
- 1. Итерация многомерного массива php
- 2. PHP итерация ассоциативного массива
- 3. Итерация многомерного массива в PHP
- 4. jsRender: итерация массива, итерация массива
- 5. OOP в PHP - итерация массива объектов
- 6. Php Mysql Выборочная ошибка команды
- 7. Итерация массива внутри массива
- 8. Итерация массива в Ruby
- 9. Итерация массива в жидкости
- 10. массива итерация в Рубине
- 11. Итерация массива PHP с парой значений ключа
- 12. PHP-блог (итерация через данные массива)
- 13. Итерация массива Php с условной индексацией
- 14. Рекурсивная итерация PHP для вложенного массива
- 15. Итерация массива php на несколько массивов
- 16. php jquery итерация php-массива в функции успеха
- 17. Выборочная копия VBA?
- 18. Итерация Json массива
- 19. Выборочная компиляция
- 20. Итерация и сравнение 2 массива
- 21. выборочная аутентификация lighttpd с использованием сценария php
- 22. выборочная печать
- 23. $ _SESSION переменная выборочная загрузка
- 24. Выборочная разница в bash
- 25. Выборочная сортировка в Java
- 26. Итерация основного массива в Ruby
- 27. итерация массива массивов в усах
- 28. Итерация массива задержки в React
- 29. Итерация json-массива в javascript
- 30. Итерация массива массивов в javascript
Узнал что-то из этого, я не знал, что вы могли бы назначить несколько переменных в первом выражении (или последующих). Благодаря! –
Скорость? В лучшем случае «кеширование» размера массива - это микро-оптимизация. Это также семантически эквивалентно. Что делать, если размер массива изменяется во время цикла? – cletus
@phil, np. рад помочь :) @cletus, если ваш массив изменяется во время цикла, вы должны использовать foreach или update $ j в цикле. Это оптимизация скорости и действительная. Представьте себе массив из 1000000 значений, тогда вы увидите, что я имею в виду. – Ozzy