从php数组中找到所有不同的路径可能性

时间:2016-09-19 09:27:12

标签: php arrays decision-tree

我正在尝试从PHP中的决策树中获取所有可能性,我的输入如下所示:

array(
    (int) 61 => array(
        (int) 257 => '62'
    ),
    (int) 62 => array(
        (int) 258 => '63',
        (int) 259 => '63',
        (int) 260 => '64',
        (int) 261 => null
    ),
    (int) 63 => array(
        (int) 262 => '65',
        (int) 263 => '65',
        (int) 264 => '66',
        (int) 265 => '69'
    ),
    (int) 64 => array(
        (int) 266 => '65',
        (int) 267 => '66',
        (int) 268 => '66',
        (int) 269 => null
    ),
...

如果达到空值,则路径已完成。

第一级键是场景ID,第二级是选择id作为键,下一场景id是值。

我无法弄清楚如何处理这个问题,我尝试了这样的递归函数:

function myRecursive($dialogs) {

        foreach($dialogs as $i => $scene_to_go) {
            if(empty($scene_to_go)) {
                $index++;
            } else {
                $result[$index][] = $scene_to_go;
                myRecursive($scenesArray[$scene_to_go]);
            }

        }

}

myRecursive($scenesArray[61]);

但它只适用于第一种可能性,我认为我接近解决方案? 问题是结束条件,以及如何避免重复。

非常感谢你的帮助。

编辑:预期结果数组应如下所示:

[
[61, 62, 63, 65],
[61, 62, 64, 65],
...
]

1 个答案:

答案 0 :(得分:0)

$finalArray

如果你展平MessageFormat.format( "{0}, {1,date,yyyy-mm-dd}, time. {1,time,medium}", place, now ); --> Kraków, 2016-04-19, time. 16:04:44 MessageFormat.format( "{0}, {1,date,mm-dd-yyyy}, time. {1,time,medium}", place, now ); --> Kraków, 06-19-2016, time. 16:06:39 ,那么你就可以在数组键中获得独特的可能性。