簡體   English   中英

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

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM