1. 程式人生 > >PHP foreach遍歷陣列之如何判斷當前值已經是陣列的最後一個

PHP foreach遍歷陣列之如何判斷當前值已經是陣列的最後一個

先給出foreach的兩種語法格式

1,foreach (array_expression as $value)
    statement
2,foreach (array_expression as $key => $value)
    statement

第一種格式遍歷給定的 array_expression 陣列。每次迴圈中,當前單元的值被賦給 $value 並且陣列內部的指標向前移一步(因此下一次迴圈中將會得到下一個單元)。

第二種格式做同樣的事,只除了當前單元的鍵名也會在每次迴圈中被賦給變數 $key

foreach在陣列遍歷的時候格外好用,簡單的一句話就能遍歷整個陣列而且不需要擔心陣列溢位的問題!

但有些時候我需要知道它是否已經迴圈到最後一個值了,比如我有一個數組,需要將它轉換成json格式,雖然json_encode()可以直接轉,這裡的重點是如何判斷陣列已經遍歷到最後一項

眾所周知,json資料格式是鍵值對之間有逗號,最後一項沒有逗號。

所以,這時候如果用foreach遍歷的話就需要知道是否已經遍歷到最後一項了,因為最後一項不要逗號呀!

end($dataArray)的作用拿到陣列的最後一項的值,只需要判斷$value是否等於end($dataArray)就可以啦!

完整程式碼如下:

$dataArray = array("name"=>"klaus", "sex"=>"male", "age"=>"18", "country"=>"China");
$ret = '{"';
foreach($dataArray as $key=>$value) {
  $ret .= $key;
  $ret .= '":"';
  $ret .= $value;
  if($value !== end($dataArray)) {
    $ret .= '","';
  }
}
$ret .= '"}';