[英]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.