2013-01-02 63 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]]"