你能为每个人澄清一下吗?

时间:2018-06-11 22:18:40

标签: php foreach

我无法理解一个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. 为什么当我更改IDD上的ID或inf上的信息时程序仍然有效?这些变量如何连接数据?

  2. 我应该如何改变我的获取方式:

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

1 个答案:

答案 0 :(得分:1)

“as”的左侧部分是foreach的“输入”:通常是arrayiterable个对象/类。

右侧部分($ID => $info)是$key => $value形式的“输出”。如何命名右侧的2个变量完全取决于您,只要您稍后在循环中使用相同的名称。

在正常的句子中,foreach的语法类似于:

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

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

}

The Docs以这种方式描述:

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

第一个表单循环遍历array_expression给出的数组。在每次迭代中,当前元素的值被赋值为$ value,内部数组指针被提前一个(因此在下一次迭代中,您将看到下一个元素)。

     

第二种形式还会在每次迭代时将当前元素的键分配给$ key变量。