PHP foreach遍歷陣列之如何判斷當前值已經是陣列的最後一個
阿新 • • 發佈:2018-12-15
先給出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 .= '"}';