Не могли бы вы уточнить меня по каждому

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

Array ( [error] => [warning] => [status] => 0 [fields] => Array ( [0] => content ) [attrs] => Array ( [path] => 7 ) [matches] => Array ( [1] => Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test1.txt ) ) [2] => Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test2.txt ) ) [3] => Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test3.txt ) ) ) [total] => 3 [total_found] => 3 [time] => 0.000 [words] => Array ( [test1] => Array ( [docs] => 3 [hits] => 3 ) ) )

Я нашел для него подходящий образец!

foreach ( $result["matches"] as $ID => $info ) {
      echo $ID." "; print_r($info); echo "<br>";
}

1 Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test1.txt ) ) 
2 Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test2.txt ) ) 
3 Array ( [weight] => 1319 [attrs] => Array ( [path] => /home/test3.txt ) ) 
                    }

Я не могу понять, как это работает!

  1. Почему, когда я меняю ID на IDD или инфо, программа все равно работает? Как эти переменные связаны с данными?

  2. Как мне изменить свой foreach для получения:

/home/test1.txt /home/test2.txt /home/test3.txt

левая часть «as» - это «вход» для foreach: обычно это массив или итерируемый объект / класс. Правая часть - это «вывод» в форме $key => $value. Итак, как вы назовете две переменные с правой стороны, полностью зависит от вас, если вы позже будете использовать то же имя внутри цикла.

Jeff 12.06.2018 00:23
as $ID похож на $ID=, поэтому вы можете использовать любое имя переменной, которое хотите, потому что значение будет присвоено новой переменной $ID.
Zev 12.06.2018 00:25

@Jeff ответил на первый вопрос. Во втором случае вы можете использовать echo($info['attrs']['path]); вместо print_r($info);.

jh1711 12.06.2018 00:32

Спасибо всем! Теперь я вижу, как ЛЮБЫЕ переменные получают значение! Теперь ясно. Код тоже работает!

Andrei 13.06.2018 14:50
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
4
46
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Левая часть «as» - это «вход» для foreach: обычно это объект / класс множество или повторяемый.

Правая часть ($ID => $info) - это «вывод» в форме $key => $value. Как вы назовете две переменные с правой стороны, полностью зависит от вас, если вы используете то же имя внутри цикла позже.

В обычном предложении синтаксис foreach будет примерно таким:

//For each (item of that) group   give me it's key and a    copy of the item     

foreach(                 $array   as           $key =>      $value) {

}

Документы опишите это так:

foreach (array_expression as $value)
    statement
foreach (array_expression as $key => $value)
    statement

The first form loops over the array given by array_expression. On each iteration, the value of the current element is assigned to $value and the internal array pointer is advanced by one (so on the next iteration, you'll be looking at the next element).

The second form will additionally assign the current element's key to the $key variable on each iteration.

Другие вопросы по теме