【问题标题】:Array tree with parent strings带有父字符串的数组树
【发布时间】:2020-05-23 00:52:37
【问题描述】:

我有一个包含多个文件名的数组列表:

Array (
[0] - FILENAME_01.txt,
[1] - FILENAME_02.txt,
[2] - FILENAME_03.txt,
[3] - FILENAME_03_REJ.txt,
[4] - FILENAME_03_REJ_REJ.txt,
[5] - FILENAME_02_REJ.txt
)

有时一个文件可能包含其他文件。示例是包含 FILENAME_03_REJ 和另一个级别 FILENAME_03_REJ_REJ 的 FILENAME_03。我需要分层显示它们,而不是寻找“REJ”,因为它是可变的,但如果一个包含另一个。最终结果应该是:

Array (
[0] - "filename" => FILENAME_01.txt, "parent_id" => 0,
[1] - "filename" => FILENAME_02.txt, "parent_id" => 0,
[2] - "filename" => FILENAME_03.txt, "parent_id" => 0,
[3] - "filename" => FILENAME_03_REJ.txt, "parent_id" => 2,
[4] - "filename" => FILENAME_03_REJ_REJ.txt, "parent_id" => 3,
[5] - "filename" => FILENAME_02_REJ.txt, "parent_id" => 1,
)

问题应该在 PHP 中解决。

【问题讨论】:

  • 您在尝试解决此问题时遇到的具体问题是什么?请向我们展示您尝试的解决方案。
  • 问题是我解决不了问题。我想知道是否有人有任何提示。

标签: php tree


【解决方案1】:

解决方法如下:

<?php
$itens = array(
    array('filename' => 'FILENAME_01.txt', 'parent_id' => 0),
    array('filename' => 'FILENAME_02.txt', 'parent_id' => 0),
    array('filename' => 'FILENAME_03.txt', 'parent_id' => 0),
    array('filename' => 'FILENAME_03_REJ.txt', 'parent_id' => 0),
    array('filename' => 'FILENAME_03_REJ_REJ.txt', 'parent_id' => 0),
    array('filename' => 'FILENAME_02_REJ.txt', 'parent_id' => 0),
    array('filename' => 'FILENAME_03_REJ_REJ_REJ.txt', 'parent_id' => 0),
);

foreach($itens as $key1 => $value1){

    $string_replace = str_replace(".txt", "", $value1['filename']);

    foreach($itens as $key => $value){  
        if((preg_match('/'.$string_replace.'/',$value['filename'])) AND ($value['filename'] != $string_replace . '.txt')){
            $itens[$key]['parent_id'] = $key1;
        }
    }
}
print '<pre>';
print_r($itens);
print '</pre>';

?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-11
    • 2020-03-30
    • 2015-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2015-07-09
    相关资源
    最近更新 更多