2

http://php.net/manual/en/control-structures.foreach.php

试图更好地理解 foreach 循环。在上面的文档中,它声明“第一种形式循环遍历由 array_expression 给出的数组。”

到底什么是array_expression?

4

2 回答 2

2

array_expression是任何产生数组的表达式。所以这些表达式本身不是数组,但在评估时会产生一个数组:

foreach(range(1, 5) as $val){}

或者:

foreach($array = range(1, 5) as $val){}

或者:

class Test {
    public static function do_it() {
        return range(1, 5);
    }
}

foreach(Test::do_it() as $val){}
于 2017-08-04T17:25:35.117 回答
1

php 手册的描述页面

表达式是 PHP 最重要的构建块。在 PHP 中,几乎任何你写的东西都是一个表达式。定义表达式的最简单但最准确的方法是“任何有价值的东西”。

所以,这意味着array_expression只是一个哑的虚拟文本让您知道 foreach 采用数组功能。

在这种情况下,

$arr = array(1, 2, 3);

foreach ($arr as $value) {
   var_dump($value);
}

会导致:

int(1) int(2) int(3)
于 2017-08-04T16:57:43.600 回答