=>是什么for-each循环中的运算符是什么意思?

时间:2014-07-14 20:06:00

标签: php loops foreach

我了解 PHP 中的=>运算符用于在关联数组中赋值:

$array = array(key1 => value1, key2 => value2, key3=> value3);

我理解PHP中的for-each loop被迭代为

foreach ($array as $value) {
  echo $value;
}

但我遇到过像

这样的事情
foreach ($question->get_order($qa) as $value => $ansid) {...}

我不理解$value => $ansid部分。

$question -> get_order($qa)返回一个数组。我们想要遍历它,所以它应该是foreach ($question -> get_order($qa) as $value) {...}

3 个答案:

答案 0 :(得分:5)

=>运算符将数组的键分配给左侧的变量,将值的值分配给右侧的变量。例如,如果您的数组是

$array = array(key1 => value1, key2 => value2, key3=> value3);

然后

foreach ($array as $key => $value) {
  echo "$key: $value\n";
}

将打印

key1: value1
key2: value2
key3: value3

如果您的数组键也有意义,并且您需要在for - 循环中,并且与值分开,则此功能特别有用。

例如:

$students_by_id = array( 1234 => "John Smith", 2372 => "Pete Johnson" );
$grades = array( 1234 => 87, 2372 => 68 );

foreach( $grades as $student_id => $grade ) {
  echo $students_by_id[$student_id] . " scored " . $grade . " / 100 points.\n";
}

请注意,如果数组是“非关联的”,例如

$array = array( value1, value2, value3 );

然后PHP将为您创建数字索引,并在

中创建$key变量
foreach ($array as $key => $value )

将运行0,1,2,3 ......,使你的循环有效地等同于

for ($key = 0, $key < count($array); ++$key) {
  $value = $array[$key];
  // ...
}

一般情况下,我仍然建议使用=>符号,如果不是为了效率,那么至少在列表中缺少索引或者你决定切换到关联数组之后。

答案 1 :(得分:4)

在for循环中,您可以使用相同的运算符来获取键和值。 =>之前的变量将获得每个项目的关键字,其后面的变量将获得其值。

因此,在您的具体情况下,$value将获取该项的键(第一次迭代时为'key1'),而$ansid将获取值'value1'第一次迭代)。

此功能对于具有(命名)键的数组特别有用,但它也适用于普通数组,在这种情况下,您将获得键的数字索引。

答案 2 :(得分:2)

$ value =&gt; $ ansid将返回键和值,而不仅仅是值。

因此,如果它是一个普通数组,键可能是0,1,2,3,4等,值将是v0,v1,v2,v3,v4。