Не могли бы вы уточнить меня для каждого - PullRequest
0 голосов
/ 12 июня 2018

Я не могу понять оператора 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 или информацию на inf, программа все еще работает?Как эти переменные соединяются с данными?

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

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

1 Ответ

0 голосов
/ 12 июня 2018

Левая часть «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

Первая форма зацикливается на массиве, заданном array_expression.На каждой итерации значение текущего элемента присваивается $ value, а указатель внутреннего массива увеличивается на единицу (поэтому на следующей итерации вы будете смотреть на следующий элемент).

ВторойФорма будет дополнительно присваивать ключ текущего элемента переменной $ key на каждой итерации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...