PHP中的动态数组遍历

我想从一维数组构建一个层次结构,并且(几乎)可以使用或多或少的硬编码代码.如何使代码动态化?

也许用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

我想你想要:
function 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;
}

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...