2013-07-26 74 views
4
$a = array("pear","apple","apple","ball","cat"); 
$u = array_unique($a); 
echo json_encode($u); 

輸出顯示爲:{「0」:「pear」,「1」:「apple」,「3」:「ball」,「4」:「cat」}array_unique返回關聯數組後的json_encode

我需要一個非關聯數組作爲輸出:[「apple」,「ball」,「cat」,「pear」]。

+1

請告訴你爲什麼需要在標準JSON編碼的一個非關聯數組。你面臨的「問題」可能並非真正的問題。 –

+1

然後遍歷你的數組並且手動創建一個json字符串 – Ahmad

+2

@Ahmad:手動構建任何東西通常都是一個可怕的想法,因爲人們不會爲了正確地做它而煩惱。這就是爲什麼我們推薦'json_encode','http_build_query','htmlspecialchars'等 – Jon

回答

11

重新編制與array_values陣列在編碼之前:

echo json_encode(array_values($u)); 
+0

但是這將再次成爲與之前禮儀相同的陣列?糾正我,如果我錯了 –

+0

@PrasanthBendra:[不,它不會](http://ideone.com/yil7FK)。但是您得到的結果取決於'array_unique'選擇刪除哪個重複元素,這是AFAIK從PHP用戶態度角度來看不確定性。如果它刪除第二個「蘋果」,你不需要重新索引,但如果它刪除了第一個你做的。你無法控制這個,所以重新索引是安全的。 – Jon

+0

Reindexing似乎是唯一的解決方案。如果array_unique()允許選擇是否保留原始索引值,那就更容易了。 –