2013-01-02 61 views
0

格式化我的數據我在PHP中的數組,與print_r它看起來像這樣如何在PHP

Array ( 
    [0] => Array ([0] => 2 [1] => 3 [2] => 3 [3] => 1 [4] => 1 [5] => 4 [6] => 1) 
    [1] => Array ([0] => 1 [1] => 2 [2] => 2 [3] => 1 [4] => 1 [5] => 1 [6] => 1) 
) 

當我做json_encode($mydata)它看起來像這樣

[["2","3","3","1","1","4","1"],["1","2","2","1","1","1","1"]]

但我需要這沒有引號,因爲下一個處理只需要像這樣的數據集:

var dataset = [ 5, 10, 15, 20, 25 ];

該數據集從來沒有打算使用json標準,我只需要讓我的數組格式正確。

這樣的問題或者是「我怎麼刪除JSON引號」這簡直是非標準無效JSON和不會得到我的答覆我需要

OR

「我怎麼格式這個php數組就像數據集「。

,要麼涉及PHP中的不同類型的打印功能,也包括在JavaScript中一些for循環的正則表達式

+1

可能的答案:HTTP://計算器。com/questions/13938645/remove-double-quote-in-json-encode – pzirkind

+2

修復你的數據。不要將字符串添加到數組中,請添加數字。 (數字字符串在'print_r'中顯示爲數字:http://codepad.org/pXzFGWr9)。 –

回答

2

Ehhh你可以試試這個:

$d = array(); 
foreach($myData as $data) { 
    $d[] = "[" . implode(",", $data) . "]"; 
} 
echo "[" . implode(",", $d) . "]"; 

演示:http://codepad.org/nTveAGWm

雖然呼應出json_encode($myData);也工作過:​​3210

+0

謝謝,雖然JSON_NUMERIC_CHECK爲我工作,我的服務器使用PHP 5.2.x,所以這個答案會更好地工作 – CQM

+1

@CQM:再次,因爲它很重要:**修復你的數據**。如果您需要數字,請使用數字。而是將數組中的字符串映射到數字,然後使用'json_encode'而不是手動創建JSON。 –

0

json_encode引起的原因引號是因爲數據是一個字符串。 試試這個例子來查看區別:

$arr = array(array(4,5,6), array(8,10, "11")); 
print_r($arr); 
echo "<br>"; 
echo json_encode($arr); 

您可以嘗試json_encoding

4

您需要使用JSON_NUMERIC_CHECK標誌,這將迫使所有的數字字符串前使用intval解析它作爲INT轉換數字。

像這樣:

json_encode($array,JSON_NUMERIC_CHECK); 

請注意,這個標誌只能從PHP 5.3.3版本

+0

不完全正確。它確保將所有*數字字符串*轉換爲*數字*。 PHP不會將任何數據轉換爲其他數據類型爲默認值,即您不必「保護」您的數據。有很大的區別。還有:*自PHP 5.3.3起可用。*。 –

+0

這確實對我有效,但我的服務器使用的是PHP 5.2.x謝謝@FelixKling救了我一個潛在的頭痛 – CQM

+0

@FelixKling是的,這確實是正確的,我的錯誤,將編輯 –

0

你可以試試這個

$c = array(1,2,3); 
echo "Non-associative array output: ", json_encode($c), "\n"; 

回報這樣的:
非關聯數組輸出:[1,2,3]

0

使用例如串u能做到水木清華這樣

$arr = json_decode('[["2","3","3","1","1","4","1"],["1","2","2","1","1","1","1"]]'); 
foreach ($arr as &$val) 
    foreach ($val as &$item) 
     $item = (int)$item; 
var_dump(json_encode($arr)); 

最後我得到

string(33) "[[2,3,3,1,1,4,1],[1,2,2,1,1,1,1]]"