[英]What does the => operator in the for-each loop mean?
我知道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) {...}
?
=>
运算符将数组的键分配给左侧的变量,并将值分配给右侧的变量。 例如,如果您的数组是
$array = array(key1 => value1, key2 => value2, key3=> value3);
然后
foreach ($array as $key => $value) {
echo "$key: $value\n";
}
将打印
key1: value1
key2: value2
key3: value3
如果您的数组键也有含义,并且需要在for
-loop中将它们与值分开,则它特别有用。
例如:
$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];
// ...
}
通常,我仍然建议使用=>
表示法,如果不是出于效率考虑,则至少在列表中缺少索引的情况下,或者您毕竟决定切换到关联数组。
在for循环中,可以使用相同的运算符来获取键和值。 =>
之前的变量将获取每个项目的键,其后面的变量将获取其值。
因此,在您的特定情况下, $value
将获取项目的键(在第一次迭代中为'key1'
),而$ansid
将获得值(在第一次迭代中为'value1'
)。
此功能对具有(命名)键的数组特别有用,但是它也适用于普通数组,在这种情况下,您将获得键的数字索引。
$ value => $ ansid将返回键和值,而不仅仅是值。
因此,如果其为纯数组,则键可能为0、1、2、3、4等,并且值将为v0,v1,v2,v3,v4。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.