2017-01-25 46 views
0

我有此代碼,基本上採取一些線,把一個陣列中的4陣列到兒子而不索引

本來數據來自以這種格式組:

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){ 
     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" 
} 
] 

有關的錯誤任何想法???

+0

你可以叫你不想要索引。你得到的結果是在對象這就是爲什麼有關鍵。但是你的代碼看起來很好。你可能不會得到對象,因爲你正在將數據合併到數組中。請重新檢查您的輸出。 –

回答

1

這將創建你所要求的

$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的數據類型,你仍然會得到你的對象進行數字索引,因爲數組必須有一個索引。這適用於PHP和JavaScript等同,當你得到這個數據給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 
     ) 

)