先給出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 .= '"}';