我有这段代码,主要是取一些行,放入一个4行一组的数组中
最初,数据的格式如下:
line1
line2
line3
line4
line5
line6
line7
line8使用下面的代码,我将行传递给array:
$addresses = [];
foreach (preg_split("/((\r?\n)|(\r\n?))/", $nodes) as $line) {
$temp[] = trim($line);
if(count($temp) == 4){
array_push($addresses,[
'ADDRESS' => $temp[0],
'STREET_NAME' => $temp[1],
'TOWN_NAME' => $temp[2],
'POST_CODE' => $temp[3]
]);
$temp = [];
}
}
var_dump(json_encode($addresses,JSON_PRETTY_PRINT));但结果不是我想要的.:
{
"1": {
"ADDRESS": "10",
"STREET_NAME": "TRIQ ID-DAR TA` PULTU",
"TOWN_NAME": "BIRZEBBUGA",
"POST_CODE": "BBG 1810"
},
"2": {
"ADDRESS": "12",
"STREET_NAME": "TRIQ ID-DAR TA` PULTU",
"TOWN_NAME": "BIRZEBBUGA",
"POST_CODE": "BBG 1810"
}
}我不想要索引..。
我需要这样的东西:
[
{
"ADDRESS": "10",
"STREET_NAME": "TRIQ ID-DAR TA` PULTU",
"TOWN_NAME": "BIRZEBBUGA",
"POST_CODE": "BBG 1810"
},
{
"ADDRESS": "12",
"STREET_NAME": "TRIQ ID-DAR TA` PULTU",
"TOWN_NAME": "BIRZEBBUGA",
"POST_CODE": "BBG 1810"
}
]你知道这个错误吗?
发布于 2017-01-25 19:55:16
这将创建您所要求的内容
$nodes = 'line1
line2
line3
line4
line5
line6
line7
line8
';
$addresses = [];
foreach (preg_split("/((\r?\n)|(\r\n?))/", $nodes) as $line) {
$temp[] = trim($line);
if(count($temp) == 4){
$obj = new stdClass();
$obj->ADDRESS = $temp[0];
$obj->STREET_NAME = $temp[1];
$obj->TOWN_NAME = $temp[2];
$obj->POST_CODE = $temp[3];
$addresses[] = $obj;
$temp = [];
}
}
var_dump(json_encode($addresses,JSON_PRETTY_PRINT));结果:
string(266) "[
{
"ADDRESS": "line1",
"STREET_NAME": "line2",
"TOWN_NAME": "line3",
"POST_CODE": "line4"
},
{
"ADDRESS": "line5",
"STREET_NAME": "line6",
"TOWN_NAME": "line7",
"POST_CODE": "line8"
}
]"但是,当您查看编码后再解码为PHP数据类型的数据时,仍然会对对象进行数字索引,因为数组必须有索引。当您将此数据转换为javascript时,这适用于PHP和等效的javascript
print_r(json_decode(json_encode($addresses)));结果
Array
(
[0] => stdClass Object
(
[ADDRESS] => line1
[STREET_NAME] => line2
[TOWN_NAME] => line3
[POST_CODE] => line4
)
[1] => stdClass Object
(
[ADDRESS] => line5
[STREET_NAME] => line6
[TOWN_NAME] => line7
[POST_CODE] => line8
)
)https://stackoverflow.com/questions/41850666
复制相似问题