如何将json_encode()自动转换为int

时间:2015-07-23 22:28:44

标签: php arrays json

所以我有这个数组,

Array 
(
    [0] => Array ( 
         [task] => Sleeping 
         [duration] => 2 
    )
    [1] => Array ( 
         [task] => Eating 
         [duration] => 1
    ) 
)

当我json_encode()它,它返回

 [{"task":"Sleeping","duration":2},{"task":"Eating","duration":1}]

我需要它

 [{"task":"Sleeping","duration":"2"},{"task":"Eating","duration":"1"}]

有什么方法吗?

2 个答案:

答案 0 :(得分:1)

转储显示数组中的变量首先是一个int,所以在将其推入数组之前将其转换为字符串

答案 1 :(得分:1)

json_encode按照type输出值,在您的情况下,它们是整数。为了将所有值包含在引号中,您需要将cast每个值作为字符串

<?php
$data = array(0 => array('task' => 'Sleeping', 'duration' => 2), 1 => array('task' => 'Eating', 'duration' => 1));
array_walk_recursive($data, function (&$value) { $value = (string)$value; });

header('content-type: application/json; charset=utf-8');
echo json_encode($data);

递归字符串转换由deceze

提供

输出:

[{"task":"Sleeping","duration":"2"},{"task":"Eating","duration":"1"}]

漂亮的打印输出:

[
    {
        "task": "Sleeping",
        "duration": "2"
    },
    {
        "task": "Eating",
        "duration": "1"
    }
]