1
我有我使用遞歸構建我的PHP陣列那麼下面的方法把它們變成一個JSON字符串:陣列,而不是從json_encode對象用遞推法
protected function stringKeyToMultArray(&$newarr, $keys, $value) {
if(count($keys) > 1) {
$key = array_shift($keys);
if(!isset($newarr[$key]) || !is_array($newarr[$key])) {
$newarr[$key] = array();
}
$this->stringKeyToMultArray($newarr[$key], $keys, $value);
} else {
$newarr[array_shift($keys)] = $value;
}
}
編輯:這是它是如何調用:
$path_arr = [];
foreach ($product_row['fields'] as $field) {
//gets the path for this field like pathto/field
$strpath = $tags[$field['id']]['str_path'];
$paths = explode('/', $strpath);
$this->stringKeyToMultArray($path_arr, $paths, $field['value']);
}
再經過這根本json_encode它像json_encode($ path_arr) 編輯完 的問題是格式,如果它得到一個第二級應該使用數組來包裝部分。所以我現在所得到的是:
{
"product_title":"Test Title",
"ASIN":"1234567890",
"codes":{
"type":"UPC",
"number":"030878249270"
},
"quantity":"1"
}
我需要的是以下幾點:
{
"product_title":"Test Title",
"ASIN":"1234567890",
"codes":[
{
"type":"UPC",
"number":"030878249270"
}
],
"quantity":"1"
}
我如何能做到這一點與遞歸方法的任何想法?
你有樣本輸入是正確編碼? –
json_encode會給你一個對象..如果你想要一個數組/關聯數組,請使用json_decode。這就是說,我甚至沒有看到json_encode在這裏被使用。 – Lansana
「如果它達到第二級應該使用對象來包裝零件」 - 但是在「我需要的是以下內容」之後顯示的是「_an array_中包裝的對象」。 – VolkerK