我想从一维数组构建一个层次结构,并且(几乎)可以使用或多或少的硬编码代码.如何使代码动态化?
也许用while(isset($array [$key])){…}?
或者,有额外的功能?像这样:$out = my_extra_traverse_function($array,$key);
function array_traverse($array,$key=NULL) { $out = (string) $key; $out = $array[$key] . "/" . $out; $key = $array[$key]; $out = $array[$key] ? $array[$key] . "/" . $out : ""; $key = $array[$key]; $out = $array[$key] ? $array[$key] . "/" . $out : ""; $key = $array[$key]; $out = $array[$key] ? $array[$key] . "/" . $out : ""; return $out; } $a = Array(102=>101,103=>102,105=>107,109=>105,111=>109,104=>111); echo array_traverse($a,104);
产量:107/105/109/111/104
我想你想要:
原文链接:https://www.f2er.com/php/138794.htmlfunction array_traverse($array,$key = null) { $out = (string) $key; if (isset($array[$key])) { $out = array_traverse($array,$array[$key]) . '/' . $out; } return $out; }
或者,对于非递归方法:
function array_traverse($array,$key = null) { $out = (string) $key; while(isset($array[$key])) { $out = $array[$key] . '/' . $out; $key = $array[$key]; } return $out; }