Цикл Foreach

Тема в разделе "Статьи", создана пользователем Nooba, 17 июл 2015.

  1. Nooba

    Nooba Banned

    Регистр:
    30 ноя 2014
    Сообщения:
    69
    Репутация:
    90
    Баллы:
    30
    Пол:
    Мужской
    Представьте, что у вас есть ассоциативный массив, который вы хотите перебрать. PHP предоставляет простой способ использовать каждый элемент массива по очереди с помощью Foreach конструкции.

    На простом языке это будет звучать примерно так:
    «Для каждого элемента в указанном массиве выполнить этот код.»

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

    PHP Foreach: Пример
    У нас есть ассоциативный массив, в котором хранятся имена людей в нашей компании, а также их возраст. Мы хотим знать, сколько лет каждому сотруднику, поэтому мы используем цикл по каждому элементу, чтобы распечатать имя каждого и возраст.

    $employeeAges;
    $employeeAges["Lisa"] = "28";
    $employeeAges["Jack"] = "16";
    $employeeAges["Ryan"] = "35";
    $employeeAges["Rachel"] = "46";
    $employeeAges["Grace"] = "34";

    foreach( $employeeAges as $key => $value){
    echo "Name: $key, Age: $value <br />";
    }
    Получаем результат:

    Name: Lisa, Age: 28
    Name: Jack, Age: 16
    Name: Ryan, Age: 35
    Name: Rachel, Age: 46
    Name: Grace, Age: 34
    Что же, результат хороший и понятный, а вот синтаксис конструкции foreach не очень легкий и понятный. Давайте разберемся в нем поподробнее.

    For each синтаксис: $something as $key => $value
    Все это безумие примерно переводится в: «Для каждого элемента ассоциативного массива $employeeAges я хочу обратиться к $key и значению в нем, то есть к $value.

    Оператор «=>» представляет связь между ключом и значением. В нашем примере мы назвали их как ключ — $key и значение — $value. Тем не менее, было бы легче думать о них, как об имени и возрасте. Ниже в нашем примере мы так и сделаем, и обратите внимание, что результат будет тот же, потому что мы только изменили имена переменных, которые относятся к ключам и значениям.

    $employeeAges;
    $employeeAges["Lisa"] = "28";
    $employeeAges["Jack"] = "16";
    $employeeAges["Ryan"] = "35";
    $employeeAges["Rachel"] = "46";
    $employeeAges["Grace"] = "34";

    foreach( $employeeAges as $name => $age){
    echo "Name: $name, Age: $age <br />";
    }
    Ну и результат, повторимся, тот же самый:

    Name: Lisa, Age: 28
    Name: Jack, Age: 16
    Name: Ryan, Age: 35
    Name: Rachel, Age: 46
    Name: Grace, Age: 34