我无法理解一个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 ) )
}
我无法理解它是如何运作的!
为什么当我更改IDD上的ID或inf上的信息时程序仍然有效?这些变量如何连接数据?
我应该如何改变我的获取方式:
/home/test1.txt
/home/test2.txt
/home/test3.txt
答案 0 :(得分:1)
“as”的左侧部分是foreach的“输入”:通常是array或iterable个对象/类。
右侧部分($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变量。