我了解 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) {...}
?
答案 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。