Php цикл каждый третий элемент

Как удалить каждый третий элемент в массиве php, пока не останется только один элемент, и напечатать этот элемент?

После этого в каждой итерации третий элемент должен быть удален, пока он не достигнет одного элемента.

итерация будет примерно такой

значение: 1 2 3 4 5 6 7 8
это нормальный

значение: 1 2 4 5 7 8
здесь 3 и 6 удалены, как они вышли в качестве 3-х элементов

затем после удаления 6 он должен считать 7 и 8 как 1-й и 2-й и перейти к значению 1, которое составляет 1 как 3-й элемент. Это продолжается до тех пор, пока не останется только один элемент.

12345678 1245678 124578 24578 2478 478 47 7 

7 является оставшимся элементом

Решение

Вот код, надеюсь, это поможет.

 count($array) -1 ? $benchmark % count($array) : $benchmark; echo $benchmark."\n"; unset($array[$benchmark]); $array = array_values($array); echo implode('', $array)."\n"; > > removeAtNth($array, 3); 
kris-roofe@krisroofe-Rev-station:~$ php test.php 1245678 124578 24578 2478 478 47 7 

Другие решения

$a = array(1,2,3,4,5,6,7,8); $thirds = array_chunk($a, 3); 
Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 ) [1] => Array ( [0] => 4 [1] => 5 [2] => 6 ) [2] => Array ( [0] => 7 [1] => 8 ) ) 

Затем просто переберите массив $ трети и array_pop () чтобы захватить последнее значение.

Однако я не уверен, почему вы хотите получить 7 в конце, а не 8. Вы можете объяснить?

Источник

Как вывести значение на каждый третий результат оператора foreach в php?

У меня есть инструкция foreach в моем приложении, которая отображает список результатов моей базы данных:

Я бы хотел:

11 ответов

Вы можете использовать счетчик и оператор по модулю/модулю, как показано ниже:

 // your code with the variable that holds the desirable CSS class name echo '
'; echo $fp['project_name']; echo '
'; > ?>
 $fp) < echo '
'; echo $fp['project_name']; echo '
'; > ?>

Если массив $featured_projects основан на инкрементном индексе, вы можете просто использовать индекс и modulo % operator.

В противном случае вам нужно будет добавить счетчик.

Используя счетчик и модуль-оператор, это легко реализовать

 else < $class = ''; >echo '
'; echo $fp['project_name']; echo '
'; > ?>

Вы можете добавить счетчик в цикле. попробуйте следующее.

  else < $class1 = 'test2'; >echo '
'; echo $fp['project_name']; echo '
'; > ?>

@mr.blaffmr.blaff, это просто синтаксическая ошибка . но логика не ошибочна. Вы можете редактировать ответ без отрицательного голоса . но вы заинтересованы только в том, чтобы отдать отрицательный голос.

Это рабочая версия, извините за мою предыдущую версию:

добавить счетчик в этот цикл и проверить, равен ли счетчик три и применить класс.

Что оставляет ваш код в основном в такте, будет

',(($i % 3) ? "result" : "result_every_third" )); echo $fp['project_name']; echo '
'; $i++; > ?>

Но вы можете захотеть использовать конструкцию for или while вокруг «each ($ featured_projects)» (см. http://php.net/manual/en/function.each.php), которая может приводят к улучшению кода.

Ещё вопросы

  • 1 Расовые условия с использованием Office.js в Excel
  • 0 Сбой PHP odbc_fetch_array, когда запрос имеет соединение с SQL-сервером с тем же именем поля
  • 1 Нахождение холста в визуальном дереве
  • 0 «Нет результата» при попытке извлечь имена из базы данных
  • 0 Использование jQuery .empty () для удаления динамических элементов
  • 0 Как игнорировать файлы с заданным префиксом?
  • 0 Angular.js каскадный выпадающий список — отображение двух моделей
  • 1 Как мы проверяем, совместимо ли значение объекта с полем примитивного типа в Java
  • 1 Есть ли какая-либо функция pytorch, которая может объединить конкретные непрерывные размеры тензора в один?
  • 1 CDF многомерного нормаля в тензорном потоке
  • 1 SQL Trigger с Entity Framework
  • 1 Сбой — отправка незащищенной трансляции
  • 1 Измерение точности предсказания для версии Android для tenorflow-Lite
  • 0 AngularJS выпадающий — автоматический выбор не работает
  • 0 JQuery Mouseleave стрельбы преждевременно в т. е. (8 и 9)
  • 1 Ошибка импорта JavaFX для пакета javafx.builders
  • 1 Android Studio 3.2 «Не найдено целевое устройство»
  • 1 Как получить выбранный документ на viewPanel xPage для данных внешнего источника?
  • 0 DBCP XAMPP не принимает мой часовой пояс
  • 0 CSS кнопки не будут в центре моей навигации
  • 0 угловая анимация, сдвиньте вправо выдвиньте влево
  • 0 Как визуализировать угловое представление при изменении модели событиями?
  • 0 Как я могу получить значение переменной из PHP в AngularJS?
  • 0 Как получить текст из диалогового окна textarea jquery UI
  • 1 Изменение домена масштаба без смещения всего графика
  • 1 Получить диапазон из двух целых чисел
  • 0 PSQL: как получить количество записей каждого значения в группе столбцов по другому столбцу
  • 1 Почему я должен привести к интерфейсу?
  • 0 Вызов JNI из C ++, FindClass и импорт
  • 0 Слайдер изображений Nav Links Перейти к Anchor DIVs
  • 1 Отображение элементов в ListViews внутри RecyclerView
  • 1 Как получить XML-контент в виде строки
  • 0 как показать персонажа, пришедшего несколько раз подряд? [Дубликат]
  • 0 Система вкладок для div
  • 1 1D массив в 2D массив в Javascript
  • 1 Как я могу скопировать триангуляцию Делоне в новые точки?
  • 1 Снимок экрана окна приложения WPF отображается на кнопке
  • 1 Конфигурация @Bean вместо context.xml
  • 1 Ошибка зависимости весны в моем файле POM
  • 0 Исходя из идеи, MySQLNonTransientConnectionException: не удалось создать соединение с сервером базы данных
  • 1 Как исправить «android.enableSeparateAnnotationProcessing является экспериментальным и не поддерживается», который регистрируется как предупреждение?
  • 1 Включить CSS в Struts2 JSP странице
  • 0 Невозможно подключиться к базе данных MySQL из локального RStudio
  • 0 MySQL INSERT в многопользовательской игре SELECT Deadlock
  • 0 Доступ к wiringPi (GPIO) из Java через JNI
  • 0 Скрипт для подсчета двух столбцов и результата эха
  • 1 Как в нижнем регистре все буквы, кроме первой буквы в TabLayout?
  • 0 Метод jQuery text ()
  • 0 Получить innerHTML из динамически добавленного тега скрипта
  • 1 Библиотеки Python отсутствуют в Docker-контейнере после их установки в сборке img

Источник

PHP получает каждый третий элемент списка

Я использовал этот код для переключения между классами для нечетных / четных элементов:

Как я могу получить каждый 3-й предмет, чтобы добавить экс. классы «один», «два», «три»?

6 ответов

Это сложно в одной строке, но вы могли бы использовать переключатель:

Чтобы очистить ваши HTML-файлы, вы можете поместить этот оператор switch в функцию.

Есть много способов. Вот такой «oneliner»:

Если вы получите более 3 элементов, вы можете получить более управляемый код с помощью оператора switch:

$classes = ['one', 'two', 'three']; for (..) < printf('', $classes[$key % count($classes)]); > 

Если в цикле есть счетчик, просто используйте модуль по модулю и проверьте, равен ли он 0. Затем вы можете добавить определенный класс.

Если вы хотите чистый HTML, определите функцию, как показано ниже:

Будет применяться default класс для каждого элемента, even класс для каждого второго элемента и third класс для каждого третьего элемента, вы можете расширить его, как вам нравится,

function apply_class($i) < $every = 'default'; $every_second = 'even'; $every_third = 'third'; $return [] = 'default'; if ( $i%2 == 0 ) < $return [] = $every_second; >if ( $i%3 == 0 ) < $return [] = $every_third; >return implode(' ', $return); > 

Будет отображать HTML как,

Эластичное решение. Вы можете иметь 3,4,5. классов, изменяя только массив $classes. Также это быстро, не нужно делить большие числа, просто перебрать небольшой массив с классом, указанным в правильном порядке

Источник

Как удалить каждый третий элемент в массиве php, пока не останется только один элемент, и напечатать этот элемент?

После этого на каждой итерации 3-й элемент должен быть удален до тех пор, пока он не достигнет одного элемента итерация будет что-то вроде этого индекс: 0 1 2 3 4 5 6 7 значение: 1 2 3 4 5 6 7 8
это нормальный индекс: 0 1 2 3 4 5 6 7 значение: 1 2 4 5 7 8
здесь 3 и 6 удалены, поскольку они вышли в качестве 3-х элементов то после удаления 6 он должен считать 7 и 8 в качестве 1-го и 2-го и перейти к значению 1, которое делает 1 в качестве третьего элемента. Это продолжается до тех пор, пока не останется только один элемент. Выход

12345678 1245678 124578 24578 2478 478 47 7 

вы меняете свой алгоритм в середине вашего образца . вы удаляете 3-й, пока не разбогатеете до 2478 в этом месте вы удаляете первый элемент . вы можете объяснить больше .

Точно . в 2478, так как 5 был удален последним, он принимает 7 как 1 и 8 как 2, а затем он идет для запуска, то есть 2, который является третьим, и он удаляет 2

То, что вы просили («. в каждой итерации 3-й элемент должен быть удален, пока он не достигнет одного элемента») — это не то, чего вы пытаетесь достичь. И, честно говоря, я не уверен, что есть образец того, чего вы пытаетесь достичь. Похоже, вы произвольно выбираете цифры для удаления через некоторое время.

TunaMaxx — я точно подумал о том же самом, когда впервые услышал об этом. Но представьте себе, что массив не останавливается на максимуме, а снова возвращается к a [0], пока не останется один элемент. 123456 думаю, что это массив . после взятия 3 и 6, как я упоминал выше, он идет 1. как его зацикливание внутри себя.

Источник

Как эффективно выбирать каждый n элемент массива?

Как быстро и эффективно выбирать какждый 5, 10, 12 и тд элемент в массиве? Массив из строк, объектов, чего угодно.

Простой 1 комментарий

Непонятно что значит «выбирать», вам нужно их сложить в новый массив? Или просто произвести какие-то действия?

const everyNth = (arr, n) => arr.filter((e, i) => i % n === 0); // применение everyNth([0, 11, 22, 33, 44, 55, 66, 77], 7) // [0, 77]

«Эффективно» без лишних итераций, старым добрым циклом for() :

Какой быстрее – сделал проверку на jsPerf
Цикл for() быстрее в 7 раз!

5dffbba9538a7281867384.png

Эффективно — только через создание второго индексного массива. При этом, очевидно, проигрыш по оперативной памяти, но не архи большой. Объекты передаются по ссылке, и строки примерно до 12 символов — тоже по ссылке.

var arr = [1,2,3,4,5,6,7,8,9,10,11,12]; //Исходный массив //Формируем вспомогательный индексный массив var i = 0; var every_5 = arr.filter(e => (++i) % 5 === 0); //Проверяем every_5[0]; //Пятый элемент every_5[1]; //Десятый элемент

Не очень эффективно перебирать весь массив, проверяя индексы, зная точно при этом что от 80 до 99 процентов из них условие не пройдут. Почему бы их просто не вычислить сразу?

Дмитрий, вы правы, но сути это не меняет. А суть в том, что эффективно заранее сформировать второй массив (одноразовое действие), а потом уже можно интенсивно его использовать, избегая операций деления.

Вообще если оптимизировать также и создание второго массива, то здесь еще проблема в том, что исходный массив может быть с дырками. Если это так, то есть 5й элемент не обязательно с индексом 4, то без перебора не обойтись. Иначе да, можно просто индексы вычислять.

dollar, Суть это немного все ж таки меняет, так как скорость будет отличаться в разы, поскольку основные времязатраты в подобных операциях уходят как раз на перебор.

dollar, Также на всякий случай замечу, что filter поставляет в функцию индекс элемента вторым параметром, посему использование дополнительной переменной не обязательно

Источник

Читайте также:  Protected abstract void java
Оцените статью