加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP中的动态数组遍历

发布时间:2020-12-13 13:48:51 所属栏目:PHP教程 来源:网络整理
导读:我想从一维数组构建一个层次结构,并且(几乎)可以使用或多或少的硬编码代码.如何使代码动态化? 也许用while(isset($array [$key])){…}? 或者,有额外的功能?像这样:$out = my_extra_traverse_function($array,$key); function array_traverse($array,$key
我想从一维数组构建一个层次结构,并且(几乎)可以使用或多或少的硬编码代码.如何使代码动态化?

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读