我想展平一個物體。這是我到目前爲止:保持秩序時展平多維物體
{
"1": {
"id": 1,
"name": "parent",
"children": {
"4": {
"id": 4,
"name": "child1",
"parent": 1
},
"5": {
"id": 5,
"name": "child2",
"parent": 1
}
}
},
"2":{
"id": 2,
"name": "parent2"
}
}
這就是我想要完成的。因此,保持相同的順序,但扁平的對象:
{
"1": {
"id": 1,
"name": "parent",
},
"4": {
"id": 4,
"name": "child1",
"parent": 1
},
"5": {
"id": 5,
"name": "child2",
"parent": 1
},
"2": {
"id": 2,
"name": "parent2"
}
}
到目前爲止我還沒有找到解決方案。我嘗試了一個沒有太多成功的功能:
protected function _flattenObject($array)
{
static $flattened = [];
if(is_object($array) && count($array) > 0)
{
foreach ($array as $key => $member) {
if(!is_object($member))
{
$flattened[$key] = $member;
} else
{
$this->_flattenObject($member);
}
}
}
return $flattened;
}
對我來說,困難的部分是保持相同的順序(孩子低於其父母)。上面提到的函數也刪除了所有的對象,並且幾乎只保留了它的值,所以它並不是很成功。
希望在這裏有人知道這個很好的解決方案。
順便說一句,我想要這樣的扁平結構的原因是因爲我必須使用的系統,無法處理多維數組和對象。我仍然希望顯示一個層次結構,這可能與我描述的扁平化結構有關,因爲對象實際上也包含一個「級別」鍵,所以我可以給它們一些基於「級別」的填充,同時仍然顯示在它們的下面家長。
編輯: JSON似乎不是有效的,所以我修改了一下。
您的原始數據是指對象的數組,還是作爲對象的對象是正確的? –
@The One and Only ChemistryBlob確實是一個物體的對象。 –
@Ryan Vincent JSON對象現在應該是有效的 –