我有一个多维数组,它是字符串和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]}];
使用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
哪个返回:
[["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);