length PHP foreach中“as $ key=> $ value”和“as $ value”之間的區別




php object to array (5)

假設您有一個像這樣的關聯數組:

$a = array(
    "one" => 1,
    "two" => 2,
    "three" => 3,
    "seventeen" => array('x'=>123)
);

在第一次迭代中: $key="one"$value=1

有時您需要此密鑰,如果您只想要該值,則可以避免使用它。

在最後一次迭代中: $key='seventeen'$value = array('x'=>123)因此要獲得此array值中第一個元素的值,您需要一個key ,在這種情況下$value['x'] =123 x: $value['x'] =123

https://code.i-harness.com

我有一個數據庫調用,我試圖找出foreach循環中$key => $value作用。

我問的原因是因為這兩個代碼輸出相同的東西,所以我試圖理解為什麼它是這樣編寫的。 這是代碼:

foreach($featured as $key => $value){
  echo $value['name'];
}

這輸出相同:

foreach($featured as $value) {
  echo $value['name']
}

所以我的問題是, $key => $valueforeach循環中只有$value之間的區別是什麼。 該數組是多維的,如果這有所不同,我只想知道為什麼在foreach循環中將$key傳遞給$value


假設您有一個這樣的數組:

$array = (0=>'123',1=>'abc','test'=>'hi there!')

在你的foreach循環中,每個循環將是:

$key = 0, $value = '123'
$key = 1, $value = 'abc'
$key = 'test', $value = 'hi there!'

當你需要知道數組密鑰時,這非常棒。


好吧,foreach循環中的$key => $value是指關聯數組中的鍵值對,其中鍵用作確定值的索引,而不是像0,1,2,...等數字。 PHP,關聯數組看起來像這樣:

$featured = array('key1' => 'value1', 'key2' => 'value2', etc.);

在PHP代碼中: $featured是循環的關聯數組,並且as $key => $value表示每次循環運行並從數組中選擇鍵值對時,它將鍵存儲在本地$key要在循環塊內使用的變量和本地$value變量中的$value 。 因此,對於上面的示例數組,foreach循環將到達第一個鍵值對,如果指定as $key => $value ,則它將'key1'存儲在$key變量中,將'value1'$value變量。

由於您不在循環塊中使用$key變量,添加或刪除它不會改變循環的輸出,但最好包括鍵值對以顯示它是一個關聯數組。

另請注意, as $key => $value指定是任意的。 您可以用as $foo => $bar替換它,只要您將循環塊中的變量引用更改為新變量$foo$bar ,它就可以正常工作。 但是,將它們設為$key$value有助於跟踪它們的含義。


如果數組看起來像:

  • $ featured [“fruit”] =“orange”;
  • $ featured [“fruit”] =“香蕉”;
  • $ featured [“vegetable”] =“胡蘿蔔”;

$ key將保存每個數組值(橙色,香蕉或胡蘿蔔)的類型(水果或蔬菜)


需要提到一個非常重要的地方,它需要foreach循環中使用key => value對。 假設您要在$features數組中向現有項( 在另一個鍵中 )添加新的/子元素。 您應該執行以下操作:

foreach($features as $key => $feature) {
    $features[$key]['new_key'] = 'new value';  
} 


而不是這個:

foreach($features as $feature) {
    $feature['new_key'] = 'new value';  
} 

這裡的最大區別在於,在第一種情況下,您通過主數組本身訪問數組的子值,並使用當前由數組指針指向的元素的

在第二個( 它不能用於此目的 )中,您將數組中的子值分配給臨時變量$feature ,該$feature在每次循環迭代後都未設置。





foreach