php递归得到父母

oso*_*den 1 php arrays recursion parents

我试图让jquery.treeview.js折叠到刚创建的文件夹.我认为我需要一组"父母"来将课程设置为"打开".

其他建议适用于我;-)(发现这有点太多,但找不到另一种方法来做到这一点.

有这样的数组:

    array(7) {
      [126]=>
      array(4) {
        ["folder_id"]=>
        string(3) "126"
        ["folder_name"]=>
        string(3) "555"
        ["folder_parent"]=>
        string(3) "125"
      }
      [2]=>
      array(4) {
        ["folder_id"]=>
        string(1) "2"
        ["folder_name"]=>
        string(14) "Administration"
        ["folder_parent"]=>
        string(1) "1"
      }
      [7]=>
      array(4) {
        ["folder_id"]=>
        string(1) "7"
        ["folder_name"]=>
        string(5) "Britt"
        ["folder_parent"]=>
        string(1) "2"
      }
      [4]=>
      array(4) {
        ["folder_id"]=>
        string(1) "4"
        ["folder_name"]=>
        string(9) "Documents"
        ["folder_parent"]=>
        string(1) "3"
      }
      [3]=>
      array(4) {
        ["folder_id"]=>
        string(1) "3"
        ["folder_name"]=>
        string(14) "Infrastructure"
        ["folder_parent"]=>
        string(1) "1"
      }
      [1]=>
      array(4) {
        ["folder_id"]=>
        string(1) "1"
        ["folder_name"]=>
        string(4) "root"
        ["folder_parent"]=>
        string(1) "0"
      }
      [125]=>
      array(4) {
        ["folder_id"]=>
        string(3) "125"
        ["folder_name"]=>
        string(13) "test-deleteme"
        ["folder_parent"]=>
        string(1) "7"
      }
    }
Run Code Online (Sandbox Code Playgroud)

我想从选定的folder_id获取父母.

获取folder_id = 126的数据应返回父类{1,2,7,122}的数组

任何人?

Lio*_*han 6

好吧,这是我的递归:

function getParent($folder_id, $data, $parents=array()) {
    $parent_id = isset($data[$folder_id]) ? $data[$folder_id]['folder_parent'] : 0;
    if ($parent_id > 0) {
        array_unshift($parents, $parent_id);
        return getParent($parent_id, $data, $parents);
    }
    return $parents;
}

//Usage
print_r(getParent(126, $your_folders));
Run Code Online (Sandbox Code Playgroud)

好像我抄袭了mancuernita的解决方案,我特此道歉.它只是相似,但我不是在复制!