我有一个多维数组,它是字符串和int值的组合 像这样
Array ( [0] => Array ( [0] => 2,2 ) [1] => Array ( [0] => 2,59 ) )
我需要让这个数组变得像这样
[['2', 2],['2', 59]]
我使用json_encode但它返回
[["2,2"],["2,59"]]
我将这个数组用于图表
我从http://php.net/manual/en/function.json-encode.php读取,但json_ecode列表中没有人可以像那样返回
有人能帮帮我吗? THX 你可以再次帮助我吗, $data = new stdClass();
$data->name = 'SD';
$data->data = $totalSD;
$data2 = new stdClass();
$data2->name = 'SMP';
$data2->data = $totalSMP;
$list = array();
array_push($list, $data);
array_push($list, $data2);
我有这样的数组
$a =[{"name":"SD","data":[0,0,0,0,0,0,0,0,0,0,0,0,0,17,2]},{"name":"SMP","data":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}];
我需要将数组更改为此类
$a =[{name:'SD',data:[0,0,0,0,0,0,0,0,0,0,0,0,0,17,2]},{name:'SMP',data:[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}];
答案 0 :(得分:2)
可行,使用foreach()
循环并在,
分隔符上爆炸字符串。
以下代码使用您在上面提供的确切数组(基于结构):
foreach($array as $key => &$item) {
foreach($item as $k => $data) {
$item = explode(',', $data[0]);
}
}
返回:
[["2","2"],["2","59"]]
如果您需要第一个value
作为字符串而第二个作为int
,则以下内容应该足够了:
foreach($a as $key => &$item) {
foreach($item as $k => $data) {
list($string, $int) = explode(',', $data[0]);
$item = array(strval($string), (int) $int);
}
}
它利用strval()
将第一个值转换为字符串,并通过PHP中的(int)
松散类型将第二个值转换为int。 / EM>
返回:
[["2", 2],["2", 59]]
我在foreach中使用了by-reference来修改原始数组。所以基本上,你将获取你的数据,运行foreach循环来根据需要修改它,然后你将对它进行编码。这是该过程将如何进行的一个伪示例:
ARRAY = Get.ARRAY
FOREACH ( ARRAY AS KEY => &VAL) {
FOREACH (VAL AS KEY => VALUE) {
LIST(FIRST_ITEM, LAST_ITEM) = EXPLODE(',', VALUE);
VALUE = ARRAY ( strval(FIRST_ITEM), (int) LAST_ITEM );
}
}
ECHO json_encode(ARRAY);