給定一個數組:拼合嵌套層次PHP數組轉換成字符串表示
0 => (
[parent_id] => null,
[name] => "Root"
[children] => array(
10 => array(
[parent_id] => 0,
[name] => "Category A",
[children] => array(
30 => array(
[parent_id] => 10,
[name] => "Category C"
)
)
),
20 => array(
[parent_id] => 0,
[name] => "Category B"
)
)
)
我需要回到這些路徑的字符串表示的數組...
array(
[0] => "Root",
[10] => "Root > Category A",
[30] => "Root > Category A > Category C",
[20] => "Root > Category B"
)
我已經搞亂圍繞這樣做遞歸,但我有一些麻煩,有效地這樣做。有沒有簡單的方法做到這一點,我只是俯瞰?
編輯:
解決方案就是亞歷山大Varwijk的回答稍微修改後的版本。一些調整,以處理不存在的孩子,通過功能不變,所以很容易改變函數名和從array_merge到+運營商更改了陣列,以保持組合鍵調用函數遞歸。
function flatten($data, $prefix = "", $item_seperator = "/") {
$seperator = $prefix == "" ? "" : $item_seperator;
$return = array();
if (is_array($data)) {
foreach($data as $key => $value) {
$return[$value["endeca_id"]] = $prefix . $seperator . $value["url_key"];
if(array_key_exists("children", $value))
{
$return = $return + call_user_func(__FUNCTION__, $value["children"], $prefix . $seperator . $value["url_key"], $item_seperator);
}
}
}
return $return;
}
我會說遞歸它是去這裏的路。謹慎地展示你最好的嘗試呢? – Wrikken