Php создать массив через цикл

Цикл for — PHP: Массивы

Работа с массивами практически всегда подразумевает итерацию по его элементам. Самый простой способ выполнить её — циклы.

Обход

 $userNames = ['petya', 'vasya', 'evgeny']; for ($i = 0; $i  count($userNames); $i++)  print_r("$userNames[$i]>\n"); > // => petya // => vasya // => evgeny 

В данном коде создаётся массив из трёх элементов — имён. Далее в цикле происходит обход массива и вывод на экран всех имён так, что каждое имя оказывается на новой строке.

Рассмотрим этот этап подробнее. При обходе массива циклом for , как правило, счётчик играет роль индекса в массиве. Он инициализируется нулём и увеличивается до count($userNames) — 1 , что соответствует индексу последнего элемента.

Интересно производится печать на экран. Элемент массива может участвовать в строковой интерполяции, а значит, мы можем сразу печатать и имя и перевод строки, используя такую конструкцию «\n» .

А что, если нам нужно вывести значения в обратном порядке? Для этого есть два способа. Один — идти в прямом порядке, то есть от нулевого индекса до последнего, и каждый раз вычислять нужный индекс по такой формуле размер массива — 1 — текущее значение счётчика .

Но есть и другой способ. Можно просто идти от верхней границы к нижней. В такой ситуации код меняется на следующий:

 $userNames = ['petya', 'vasya', 'evgeny']; for ($i = count($userNames) - 1; $i >= 0; $i--)  print_r("$userNames[$i]>\n"); > 

При таком обходе проверка остановки должна быть именно на >= , иначе пропустится элемент с индексом 0 .

Изменение

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

 $emails = ['VASYA@gmAil.com', 'iGoR@yandex.RU', 'netiD@hot.CoM']; print_r($emails); // => Array // => ( // => [0] => VASYA@gmAil.com // => [1] => iGoR@yandex.RU // => [2] => netiD@hot.CoM // => ) for ($i = 0; $i  count($emails); $i++)  # strtolower - стандартная функция php $emails[$i] = strtolower($emails[$i]); > print_r($emails); // => Array // => ( // => [0] => vasya@gmail.com // => [1] => igor@yandex.ru // => [2] => netid@hot.com // => ) 

Ключевая строчка: $emails[$i] = strtolower($emails[$i]); . В ней происходит перезапись элемента под индексом $i . Иногда полезно создать промежуточную переменную для упрощения анализа кода:

 $email = $emails[$i]; $emails[$i] = strtolower($email); 

Инициализация цикла

При инициализации цикла for в круглых скобках располагаются три блока выражений, разделяемые символом ; .

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

Второй блок определяет условие выполнения цикла и содержит выражение, которое вычисляется перед каждой очередной итерацией. Работа цикла продолжается, если это выражение возвращает true . Если же проверка оказывается ложной, цикл заканчивает свою работу.

В третьем блоке содержатся выражения, которые обрабатываются в конце итерации цикла. Обычно здесь происходит необходимое преобразование счётчика, например, инкремент.

 $colors = ['red', 'black', 'white', 'green']; for ($i = 0; $i  count($colors); $i++)  print_r("$colors[$i]>\n"); > 

В процессе работы цикла выражение, которое содержится в блоке условий вычисляется заново. Это значит, что в нашем примере длина массива count($colors) будет вычисляться вновь и вновь при каждом проходе цикла. Так как сам массив остаётся неизменным, то повторное вычисление размера оказывается избыточным. Повторения операции можно избежать, если определить переменную за пределами цикла и присвоить ей необходимое значение.

 $colors = ['red', 'black', 'white', 'green']; $length = count($colors); for ($i = 0; $i  $length; $i++)  print_r("$colors[$i]>\n"); > 

Но существует более оптимальное решение: описать несколько выражений в блоке инициализации цикла for и разделить их запятыми. Это позволяет избегать лишних вычислений, в случае с нашим примером, единожды определив значение length . А также мы сразу видим переменные, которые используются только внутри цикла.

 $colors = ['red', 'black', 'white', 'green']; for ($i = 0, $length = count($colors); $i  $length; print($i), $i++)  print_r("$colors[$i]>\n"); > // => red // => 0black // => 1white // => 2green // => 3 

А вот пример использования нескольких выражений в блоке изменения счётчика:

 for ($i = 0; $i  5; print("$i\n"), $i++)  // some code > // => 0 // => 1 // => 2 // => 3 // => 4 

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Источник

Php создать массив через цикл

Для заполнения массива будем использовать цикл

Перед запуском цикла, нам нужно создать пустой массив:

Нам понадобится какой-то массив, чтобы его пропустить в цикле и пересобрать новый массив! Но, чтобы н мучаться мы зададим в цикле приделы работы цикла и как будто пересобираем массив.

А внутри цикла будем заполнять наш новый массив:

И в конце выведем результат вновь собранного массива через print_r

Пример заполнения массива в цикле

Если мы выполним скрипт, который собирает массив в цикле, код скрипта выше мы разобрали, то получим вот такой результат:

Результат заполнения массива в цикле

[0] => 1970
[1] => 1971
[2] => 1972
[3] => 1973
[4] => 1974
[5] => 1975
[6] => 1976
[7] => 1977
[8] => 1978
[9] => 1979
[10] => 1980

Такой вариант получения цикла в массив в php применяется очень часто! По многим причинам, причины могут быть разными.

Примеры заполнения массива в цикле.

Если мы посмотрим на нашу страницу blog.html списком, то это простой массив, записанный построчно в файле, выведенный в цикле.
В момент вывода, создается новый массив, где определенным образом(долго рассказывать) собирается новый массив, но уже с количеством просмотров. И если вы нажмете кнопку сортировать по возрастанию, то будет обрабатываться уже пересобранный массив с количеством просмотров.

Источник

Создание и перебор массивов в PHP

Создание и перебор массивов в PHP

Пришло время разобраться с ещё одним типом переменных в PHPмассивами. Массив — это тип переменной, который может содержать множество значений, причём даже разных типов. И этой статье мы поговорим о создании и переборе массивов в PHP.

Создать массив в PHP очень просто:

Здесь мы создали массив, в котором находится пять значений. Обратите внимание, что типы переменных различны. На следующих двух строках мы выводим два элемента из этого массива. Очень важно: нумерация начинается с 0! То есть первый элемент имеет индекс 0, второй — 1 и так далее.

На самом деле, в предыдущем примере мы создавали не массив, а, скорее, список. Список — это тот же массив, но с числовыми индексами, идущими по порядку (то есть 0, 1, 2, 3 и так далее). А теперь создадим именно массив (его ещё называют ассоциативный массив):

Здесь мы создали массив не с числовым индексом, а с так называемыми ключами. Ключами в массиве являются: «Name» и «Age«. У каждого ключа имеется значение «Tom» и 14 соответственно. Думаю, здесь вопросов не возникает.

А теперь разберём перебор массива. Первый массив (который список) перебирается элементарно:

Здесь просто идёт цикл for от 0 до длины массива и при каждой итерации выводится элемент массива.

А как же быть с ассоциативными массивами, ведь там индексы не числовые, как их перебирать? Для этого существует цикл foreach, который перебирает массив по ключам:

Думаю, что синтаксис понятен: $k — это ключ, а $v — соответствующее значение, и в этом массиве поочерёдно перебираются все пары в массиве, а потом выводятся. Разумеется, с помощью foreach можно также перебирать и списки.

В этой статье мы с Вами разобрали создание списков и массивов, а также я показал Вам как делать перебор всех значений, используя классическую конструкцию for и очень полезную и простую конструкцию foreach.

Создано 06.11.2010 10:20:02

  • Михаил Русаков
  • Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

    Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
    Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

    Если Вы не хотите пропустить новые материалы на сайте,
    то Вы можете подписаться на обновления: Подписаться на обновления

    Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

    Порекомендуйте эту статью друзьям:

    Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

    1. Кнопка:
      Она выглядит вот так:
    2. Текстовая ссылка:
      Она выглядит вот так: Как создать свой сайт
    3. BB-код ссылки для форумов (например, можете поставить её в подписи):

    Комментарии ( 22 ):

    Использовать надо второй вариант, так как данный перебор будет универсальным. А задача программиста делать, как можно меньше частного, и как можно больше общего.

    хочу вывести к примеру слово привет 10 раз.. скажите, вот так можно делать?? $str = ‘привет’; for ($i=1; $i’; >

    Если это работает, то, да, можно.

    Михаил, добрый день! Подскажите, пожалуйста, как можно вытащить максимальный элемент из массива, чтобы показать не только сам элемент, но и его номер? У меня два массива (строки), выполняю деление элементов одного на элементы другого и ввожу результаты в третий массив. Теперь нужно выбрать максимальный и показать его значение и порядковый номер. Попробовал след. алгоритм: for ($i = 0; $i < count($indicator1); $i++) for ($i = 0; $i < count($hum1); $i++) $maxarr[$i]=$indicator1[$i]/$hum1[$i]."
    «;// делим индикатор на численность $max=0; $sz=sizeof($maxarr); for($i=0;$i <$sz;$i++) if($maxarr[$i] >$max) $max=$maxarr[$i]; $maxI=$i; echo $max; echo $maxI; Выводится только показатель, а его порядковый номер нет. Спасибо! Михаил, и еще один вопрос. Подскажите, как вывести элементы массива, чтобы их порядковые номера начинались с 1. Т.е. arr[0] выводился бы на экран как первый элемент. Спасибо!

    if($maxarr[$i] > $max) $max=$maxarr[$i]; $maxI=$i; — фигурных скобок не хватает, 2 же оператора. На второй вопрос ответ — по-хорошему никак, и это правильно, поскольку гораздо удобнее нумерация с 0. Если же нужно с 1, то и инициализируйте постоянно массивы с 1 (вручную), и все циклы также с 1 начинайте, а не с 0.

    Михаил, спасибо! Вроде все получилось! Внимательность, и еще раз внимательность! По второму вопросу: что означает инициализировать постоянно вручную? Не совсем понял. Как его объявлять и присваивать данные? Спасибо!

    Это значит, что указывать индекс постоянно. $array[] — вот так не получится, поэтому нужно указывать в первый раз $array[1], а уже потом можно и $array[].

    Михаил, добрый день! Спасибо за ответ. Скажите, как подсчитать сумму элементов массива? Нашел функцию sum_array, но почему то не работает. Спасибо!

    Сумму элементов массива Вы должны сами научиться считать. Это простейшая задача, смысла делать что-то ещё нет, пока Вы её не решите. Поэтому подумайте сами.

    Согласен с вами полностью! Задача начального уровня (куда я и отношусь) Я решил ее следующим образом: $sum = $sum + $hum3[i]; вложил в цикл for. Но мне интересна именно отдельная функция. Это же легче. Не надо вводить переменную. Сразу выводишь на печать. Существует ли такая функция? Спасибо!

    array_sum() — функция, возвращающая сумму элементов массива.

    Михаил, спасибо! Еще немножко помучаю вас :)! Скажите, существуют ли в php готовые функции например расчета коэффициента корреляции или необходимо писать алгоритм? Я пока баклажан в php, но не хотелось бы изобретать велосипед.

    Таких функций точно нет, это не Statistica и даже не Matlab. Поэтому нужно писать это самому.

    Источник

    Читайте также:  Все глаголы русского языка html
    Оцените статью