0


我有一个相当简单的问题,我希望你能帮助我:)

我有一个数组:

-transport
--plane
---boeing
---airbus
--car
---audi
---ford

该数组可能有更多不同深度的级别,但我需要从顶层输出每条路线。就像是:

transport->plane->boeing
transport->plane->airbus
transport->car->audi
transport->car->ford

有人对如何解决这个问题有任何建议吗?

许多问候
安德烈亚斯

4

4 回答 4

0

您需要运行递归数组遍历器。

function walk_array($array) {
   foreach ($array as &$item) {
     if (is_array($item)) {
       walk_array($item);
     } else {
       echo $item;
     }
   }
}

walk_array($somearray);

问题是,您需要从自身重用相同的功能。但是你应该发布更多关于你的代码的信息,因为通常你应该更好地控制你的数据结构。

于 2013-09-10T15:31:02.023 回答
0
 <?php

function show($arr, $prefix = '')
{
    if (!is_array($arr))
    {
        if ($prefix)
        {
            echo $prefix . '->'. $arr, "\n";
        }
        else
        {
            echo $arr, "\n";
        }
    }
    else
    {
        foreach ($arr as $key => $val)
        {
            $pre = $prefix;

            if (is_array($val))
            {
                if ($pre)
                {
                    $pre = $pre . '->' . $key;
                }
                else
                {
                    $pre = $key;
                }
                show($val, $pre);
            }
            else
            {
                show($val, $pre);
            }
        }
    }
}

$list = array(
    'transport' => array(
        'plane' => array(
            'boeing',
            'airbus',
        ),
        'car' => array(
            'audi',
            'ford'
        ),
    ),
);

show($list);

输出:

transport->plane->boeing
transport->plane->airbus
transport->car->audi
transport->car->ford
于 2013-09-10T15:36:09.660 回答
0

任何建议如何解决这个问题?

array_walk_recursive().

相应地设置user_data()以记住父元素。

注意:我故意不提供示例代码来教你钓鱼。那就是学习查看手册并成为更好的 PHP 开发人员

于 2013-09-10T15:36:30.390 回答
0
<?php
    $arrTrans = array(
        'plane' => array('boeing', 'airbus'),
        'car' => array('audi', 'ford')
    );
    $strTree = '';
    foreach($arrTrans as $strKey => $arrMode) {
        $strTree .= $strKey;
        foreach($arrMode as $intKey => $strVal)
            $strTree .= ' ' . $strVal;    
        $strTree .= PHP_EOL;
    }
    print $strTree;
?>

那应该给出一些想法

于 2013-09-10T15:55:34.250 回答