0

我在 php 中有一个数组,print_r它看起来像这样

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,不会得到我需要的响应

或者

“我如何将这个 php 数组格式化为像数据集一样”。

它要么涉及 php 中的另一种打印函数,要么涉及 javascript 中的一些 forloop 正则表达式

4

5 回答 5

4

您需要使用该JSON_NUMERIC_CHECK标志,这将强制将所有数字字符串转换为数字。

像这样:

json_encode($array,JSON_NUMERIC_CHECK);

请注意,此标志仅适用于 PHP 5.3.3 版本

于 2013-01-02T21:04:03.443 回答
2

Ehhh you could try this:

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

Demo: http://codepad.org/nTveAGWm

Although echoing out json_encode($myData); worked as well: http://codepad.org/KTfQHz6s

于 2013-01-02T20:59:52.200 回答
0

json_encode 加引号的原因是因为数据是一个字符串。试试这个例子来查看差异:

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

您可以尝试在 json_encoding 之前使用intval将其解析为 int

于 2013-01-02T21:04:02.187 回答
0

你可以试试这个

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

返回:
非关联数组输出:[1,2,3]

于 2013-01-02T21:09:17.067 回答
0

使用您的示例字符串,您可以这样做

$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]]"
于 2013-01-02T21:11:47.987 回答