Php цикл для одномерного массива

Php цикл для одномерного массива thumbnail
Как вывести PHP массив

Примеры использования PHP функций и циклов для вывода всех элементов массива в окно браузера.

1

Функция print_r()

Функция print_r() выводит информацию о переменной в удобочитаемом виде. Чтобы отобразить пробелы и переносы результат функции нужно обернуть в тег <pre>.

$array = array(
‘Andi’,
‘Benny’,
‘Cara’,
‘Danny’,
‘Emily’,
);

echo ‘<pre>’;
print_r($array);
echo ‘</pre>’;

PHP

Результат:

Array
(
[0] => Andi
[1] => Benny
[2] => Cara
[3] => Danny
[4] => Emily
)

2

Функция var_dump()

Функция var_dump() отображает информацию о переменной, включая тип и значение.

$array = array(
‘Andi’,
‘Benny’,
‘Cara’,
‘Danny’,
‘Emily’,
);

echo ‘<pre>’;
var_dump($array);
echo ‘</pre>’;

PHP

Результат:

array(5) {
[0]=>
string(4) “Andi”
[1]=>
string(5) “Benny”
[2]=>
string(4) “Cara”
[3]=>
string(5) “Danny”
[4]=>
string(5) “Emily”
}

3

var_export()

Функция var_export() возвращает строковое представление переменной в виде полноценного PHP-кода.

$array = array(
‘Andi’,
‘Benny’,
‘Cara’,
‘Danny’,
‘Emily’,
);

echo ‘<pre>’;
echo var_export($array);
echo ‘</pre>’;

PHP

Результат:

array (
0 => ‘Andi’,
1 => ‘Benny’,
2 => ‘Cara’,
3 => ‘Danny’,
4 => ‘Emily’,
)

4

Цикл foreach

Цикл foreach специально создан для поэлементного перебора массивов.

$array = array(
‘Andi’,
‘Benny’,
‘Cara’,
‘Danny’,
‘Emily’,
);

foreach ($array as $row) {
echo $row . “<br>rn”;
}

PHP

Результат:

Andi<br>
Benny<br>
Cara<br>
Danny<br>
Emily<br>

Пример с выводом нумерованного списка с использованием индексов массива:

$array = array(
‘Andi’,
‘Benny’,
‘Cara’,
‘Danny’,
‘Emily’,
);

foreach ($array as $n => $row) {
echo ($n + 1) . ‘.’ . $row . “<br>rn”;
}

PHP

Результат:

1.Andi<br>
2.Benny<br>
3.Cara<br>
4.Danny<br>
5.Emily<br>

Чтобы не выводить последний <br>, добавим условие:

$array = array(
‘Andi’,
‘Benny’,
‘Cara’,
‘Danny’,
‘Emily’,
);

foreach ($array as $n => $row) {
echo ($n + 1) . ‘.’ . $row;
if ($n < count($array) – 1) {
echo “<br>rn”;
}
}

PHP

Результат:

1.Andi<br>
2.Benny<br>
3.Cara<br>
4.Danny<br>
5.Emily

5

Цикл for

Цикл for подойдет только в случаях, когда индексы массива имеют непрерывную нумерацию.

$array = array(
‘Andi’,
‘Benny’,
‘Cara’,
‘Danny’,
‘Emily’,
);

for ($n = 0; $n < count($array); $n++) {
echo $n + 1 . ‘.’ . $array[$n] . “<br>rn”;
}

PHP

Результат:

1.Andi<br>
2.Benny<br>
3.Cara<br>
4.Danny<br>
5.Emily<br>

6

Цикл while

Цикл while такое же работает как и for.

$array = array(
‘Andi’,
‘Benny’,
‘Cara’,
‘Danny’,
‘Emily’,
);

$index = 0;
while ($index < count($array)) {
echo $index + 1 . ‘.’ . $array[$index] . “<br>rn”;
$index++;
}

PHP

Результат:

1.Andi<br>
2.Benny<br>
3.Cara<br>
4.Danny<br>
5.Emily<br>

7

Функция implode()

Также, для вывода массива удобно использовать функцию implode(), которая объединяет элементы массива через разделитель.

$array = array(
‘Andi’,
‘Benny’,
‘Cara’,
‘Danny’,
‘Emily’,
);

echo implode(“<br>rn”, $array);

PHP

Результат:

Andi<br>
Benny<br>
Cara<br>
Danny<br>
Emily

HTML

Также с помощью функции implode() можно вывести список <ul> <li>.

echo ‘<ul><li>’ . implode(‘</li><li>’, $array) . ‘</li></ul>’;

PHP

Результат:

<ul>
<li>Andi</li>
<li>Benny</li>
<li>Cara</li>
<li>Danny</li>
<li>Emily</li>
</ul>

HTML

Источник

При работе с массивами в языке программирования php множество задач решается с помощью перебора их элементов. Для этого используют рассмотренные в прошлых уроках циклические конструкции (for, whilе…) или конструкцию  foreach, которая была специально создана для работы с массивами.

Давайте для начала рассмотрим способ перебора массива с помощью цикла whilе:

<?php
$goroda = array (“Токио”, “Пекин”, “Москва”);
$index = 0;
$elements = count ($goroda);
while ($index < $elements) {
echo $index+1 . “.” . $goroda[$index] . “<br>”;
$index++;
}
?>

В результате работы этого скрипта мы увидим на экране следующую информацию:

1. Токио

2. Пекин

3. Москва

Скорее всего в данном примере Вы столкнулись с несколькими незнакомыми или непонятными моментами.  Поэтому давайте рассмотрим этот скрипт более детально.

Вначале создается массив $goroda с 3 элементами:

$goroda [0] = “Токио”,

$goroda [1] = “Пекин”,

$goroda [2] = “Москва”

Потом инициализируются 2 переменные: $index и $elements. Первая выступает ключом (индексом) для последующего обращения внутри цикла к элементам массива. Эта переменная получила значение 0, так как индексация массивов в php начинается с нуля.

Переменная $elements получила значение, которое вернула встроенная функция count(). Встроенная функция count() возвращает количество элементов массива, имя которого задается в аргументе. В примере 3 элемента, поэтому значение $elements будет равняться трем.

Читайте также:  Какие предметы входят в гуманитарный цикл предметов

Итерация в цикле согласно условию выполняется до тех пор, пока индекс элементов не будет равнятся максимальному количеству элементов в перебираемом масссиве (не забываем, что переменная $index равна нулю, а не единице). На экран  при помощи команды echo выводится результат операции конкатенации. В конце выполняется инкремент (увеличение переменной $index на единицу). Не забывайте об этом нюансе, так как он позволяет работать с последующими элементами массива и обеспечивает прекращение работы цикла, когда заданное условие выполнено.

Пример выполнения этой ж задачи с помощью цикла for:

<?php
$goroda = array (“Токио”, “Пекин”, “Москва”);
for ($index = 0; $index < count ($goroda); $index++){
echo $index+1 . “.” . $goroda[$index] . “<br>”;
}
?>

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

foreach (название_масссива as $value)
какое-то выражение;
foreach (название as $key => $value)
какое-то выражение;

Ключ элемента передается в переменную $key, значение в свою очередь присваивается переменной $value. В то время как в первом варианте записи доступно только значение элемента, во втором доступным является еще и его ключ. Пример:

<?php
$goroda = array (“Токио”, “Пекин”, “Москва”);
foreach ($goroda as $value){
echo $value . “<br>”;
}
?>

Чаще всего конструкцию foreach в php  используют для перебора ассоциативных массивов. Рассмотрим следующий пример:

<?php
$goroda = array (
“login” => “Admin”,
“paswd” => “gh360D12lJ”,
“email” => “adm@somemail.com”,
“profession” => “php programmer”
);
foreach ($goroda as $key => $value){
echo $key . “:” . $value . “<br>”;
}
?>

В некоторых случаях способы перебора элементов массива комбинируют. Давайте организуем перебор элементов многомерного массива:

<?php
$polzovateli = array (
0 => array (
“login” => “Admin”,
“paswd” => “gh360D12lJ”,
“email” => “adm@somemail.com”,
“profession” => “php programmer”
)
1 => array (
“login” => “Alex”,
“paswd” => “hd240lbDsA0”,
“email” => “alex@somemail.com”,
“profession” => “engineer”
)
2 => array (
“login” => “James”,
“paswd” => “lre54c0Sdv0f”,
“email” => “james@somemail.com”,
“profession” => “dancer”
)
);
echo “<table border=2>”;
echo “<tr><td>Логин</td><td>Пароль</td><td>E-mail</td><td>Профессия</td></tr>”;
for ($index = 0; $index < count($polzovateli); $index++){
echo “<tr>”;
foreach ($polzovateli[$index] as $value){
echo “<td>” . $value . “</td>”;
}
echo “</tr>”;
}
echo “</table>”;
?>

Данный скрипт выведет на экран в виде удобной таблицы массив $polzovateli. Если Вам необходимо просмотреть структуру и значения элементов массива без красивого вывода, то используйте встроенную функцию print_r(). У нее следующий синтаксис:

bool print_r (mixed expression[, bool return]);

Пример использования на практике:

print_r ($polzovateli);

Рекомендуем самостоятельно поэксперементировать с данной php функцией.

Источник

PHP: Массивы

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

Обход

<?php

$userNames = [‘petya’, ‘vasya’, ‘evgeny’];

for ($i = 0; $i < count($userNames); $i++) {
print_r(“{$userNames[$i]}n”);
}

// => petya
// => vasya
// => evgeny

https://repl.it/@hexlet/php-arrays-traversal-for-print

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

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

Интересно производится печать на экран. Элемент массива может участвовать в строковой интерполяции, а значит, мы можем сразу печатать и имя и перевод строки, используя такую конструкцию “{$userNames[$i]}n”.

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

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

Читайте также:  В системе разомкнутого цикла

<?php

$userNames = [‘petya’, ‘vasya’, ‘evgeny’];

for ($i = count($userNames) – 1; $i >= 0; $i–) {
print_r(“{$userNames[$i]}n”);
}

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

Изменение

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

<?php

$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
// => )

https://repl.it/@hexlet/php-arrays-traversal-for-update

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

<?php

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

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

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

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

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

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

<?php

$colors = [‘red’, ‘black’, ‘white’, ‘green’];

for ($i = 0; $i < count($colors); $i++) {
print_r(“{$colors[$i]}n”);
}

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

<?php

$colors = [‘red’, ‘black’, ‘white’, ‘green’];
$length = count($colors);

for ($i = 0; $i < $length; $i++) {
print_r(“{$colors[$i]}n”);
}

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

<?php

$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

https://repl.it/@hexlet/php-arrays-for-initialize

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

<?php

for ($i = 0; $i < 5; print(“$in”), $i++) {
// some code
}

// => 0
// => 1
// => 2
// => 3
// => 4

https://repl.it/@hexlet/php-arrays-for-increment

Рассмотренные блоки могут быть пустыми, при этом сохраняются разделители ;. Но так делать не рекомендуется. Все блоки должны полным и ясным образом описывать работу цикла.

Дополнительные материалы

  1. Официальная документация

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Для полного доступа к курсу нужна профессиональная подписка

Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ

Источник

PHP урок № 68

Cоздание одномерных массивов в PHP5.

Если говорить человеческим языком, то массивом называется некая
зарезервированная область, в которой упорядочено содержатся данные. Если взять,
например, человека, то у каждого есть свои черты как внешности так и характера.
Попробуем от этого оттолкнуться, проведя параллель.

Черты характера

  1. смелый
  2. верный
  3. добрый
  4. весёлый
  5. сильный
Читайте также:  Сколько составляет цикл сна

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

Стек (англ. stack — стопка) — структура данных с методом доступа к элементам LIFO (англ.
Last In — First Out, «последним пришел — первым вышел»). Чаще всего принцип работы стека
сравнивают со стопкой тарелок: чтобы взять вторую сверху, нужно взять верхнюю.

Википидея

Все вышеперечисленные свойства можно отнести к характеру человека. В виду этого
назовём массив -как и всё на свете тоже имеет имя- character (от русс. характер).
Теперь для того, чтобы обратиться к этому ящику под именем character, нам обязательно
следует указать индекс того типа характера, который нам нужно извлечь из этого
массива character.

Массив – последовательность однотипных элементов, число которых фиксировано и
которым присвоено одно имя. Положение элемента в массиве однозначно определяется
его индексами. Выделяют одномерные массивы (вектора) и двумерные массивы
(матрицы).

Индекс также называют ключом массива, смысл от этого не меняется.

А индексом массива в данном примере является его номер строки, т.е. верный имеет
индекс 2, весёлый – индекс 4. На этом с аллегориями пока закончим, перейдём уже к
самому синтаксису написания кода создания массива.

Одномерный массив

Листинг № 1 – Первый способ. Создаём массив character

<?php

        

        $character

[1] = “смелый”;

        $character[2] = “верный”;

        $character[3] = “добрый”;

        $character[4] = “весёлый”;

        $character[5] = “сильный”;

        

        // Ð¼Ð°ÑÑÐ¸Ð² ÑÐ¾Ð·Ð´Ð°Ð½

        // ÑÑ‚о – Ð¼Ð°ÑÑÐ¸Ð², Ð¸ Ð² Ð½Ñ‘м ÑÐ¾Ð´ÐµÑ€Ð¶Ð°Ñ‚ся Ð²ÑÐµ Ñ‡ÐµÑ€Ñ‚Ñ‹ Ñ…арактера,

                //которые Ð¼Ñ‹ Ð² Ð½ÐµÐ³Ð¾ Ð¿Ð¾Ð¼ÐµÑÑ‚или

        $character; 

        

        // Ñ‡Ñ‚обы Ð²Ñ‹Ð²ÐµÑÑ‚и ÐºÐ°ÐºÑƒÑŽ-либо Ñ‡ÐµÑ€Ñ‚у Ñ…арактера, 

                // ÑÐ»ÐµÐ´ÑƒÐµÑ‚ Ð¾Ð±Ñ€Ð°Ñ‚иться Ðº Ð¼Ð°ÑÑÐ¸Ð²Ñƒ, ÑƒÐºÐ°Ð·Ð°Ð² Ð½Ð° Ð¸Ð½Ð´ÐµÐºÑ – ÑÑ‚о Ñ†Ð¸Ñ„ры 

                // Ð² ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚ных ÑÐºÐ¾Ð±ÐºÐ°Ñ…

        

        echo $character[5]; // Ð²Ñ‹Ð²ÐµÐ´ÐµÑ‚ Ð½Ð° ÑÐºÑ€Ð°Ð½ – ÑÐ¸Ð»ÑŒÐ½Ñ‹Ð¹ 
?>

Такой способ создания массивов на практике применяется редко, его практичность
вызывает сомнение, он скорее подходит в качестве примера, показа структуры
массива. Рассмотрим ещё один способ.

Листинг № 2 – Второй способ. Создаём массив с помощью функции array

<?php 

$character 

= array(1=>’смелый’,2=>’верный’,3=>’добрый’,4=>’весёлый’,5=>’сильный’);

    

    // Ð¼Ð°ÑÑÐ¸Ð² ÑÐ¾Ð·Ð´Ð°Ð½

    

    echo $character[4]; // Ð²ÐµÑÑ‘лый 
?>

Этот способ выглядит уже более рациональным, хотя до идеала тоже не дотягивает.
Здесь массив создан с помощью встроенной функции PHP array(). В скобках присутствуют
пары индекс => значение. Знак => – является указателем для присваивания индекса
значению или наоборот значению индекс. Рассмотрим ещё пример.

Листинг № 3 – Третий способ. Создание массива с помощью функции array без указателей

<?php 

    $character 

= array(‘смелый’,’верный’,’добрый’,’весёлый’,’сильный’);

    

    // Ð¼Ð°ÑÑÐ¸Ð² ÑÐ¾Ð·Ð´Ð°Ð½

    

    echo $character[4]; // ÑÐ¸Ð»ÑŒÐ½Ñ‹Ð¹

    
?>

                                

Сравните листинг 2 и листинг 3. Видите разницу в выводе на монитор?! Ни какой ошибки
здесь нет, всё гораздо прозаичней. Смотрите ниже лампочку.

Все счётчики в программировании по умолчанию начинают свой отсчёт с нуля!

Теперь всё встало на свои места, т.е. без указателя (=>) в скобках массива, значениям
присваивается индекс по порядку, начиная с нуля. Итак, индексу ноль соответствует
значение смелый (0=>смелый) и т.д. по порядку.

Листинг № 4 – Четвёртый способ. Создание массива с помощью функции array с указателем и без
указателя

<?php 

    $character 

= array(‘смелый’,4 =>’верный’,’добрый’,2 =>’весёлый’,’сильный’);

    

    // Ð¼Ð°ÑÑÐ¸Ð² ÑÐ¾Ð·Ð´Ð°Ð½

    

    echo $character[0]; // ÑÐ¼ÐµÐ»Ñ‹Ð¹

    echo $character[1]; // Ð¿ÑƒÑÑ‚о

    echo $character[2]; // Ð²ÐµÑÑ‘лый

    echo $character[3]; // Ð¿ÑƒÑÑ‚о 

    echo $character[4]; // Ð²ÐµÑ€Ð½Ñ‹Ð¹ 

    echo $character[5]; // Ð´Ð¾Ð±Ñ€Ñ‹Ð¹ 

    echo $character[6]; // ÑÐ¸Ð»ÑŒÐ½Ñ‹Ð¹ 
?>

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

  • смелый – по умолчанию присваивается ноль (не имеет указателя на индекс)
  • верный – имеет указатель на индекс 4, хотя по умолчанию должен быть 1 =>
  • добрый – по умолчанию должен быть индекс 2 =>, но индекс 2 принудительно присвоен
    типу характера “весёлый”
  • весёлый – всё понятно, имеет второй индекс
  • сильный – по умолчанию должен иметь индекс 4, но он уже занят.
    Следом за четвёркой идёт цифра 5 и первый непроиндексированный тип характера,
    следом за четвёртым индексом – идёт “добрый” – индекс 5, а следом ещё не имеющим
    индекса, идёт тип характера сильный – он и будет с шестёркой.

На этом урок закончен.

SETTER © LPHP.RU

Администрация сайта

19.07.2009 01:59:32

Комментарии

Ко
07.10.2012 20:12:40

Урок доходчивый, спасибо!

Константин
24.07.2013 08:25:52

супер супер все понятно, спасибо

Источник