-4

cms_beforeまたはcms_afterキーを使用して配列から要素を移動する必要があります。たとえば、フォルダBは、フォ​​ルダAがGUID(0E3B180C-F4AA-484F-A19D-318E6D4D2A6C)を使用した後です。

配列:

配列
((
    [0]=>配列
        ((
            [cms_parent_node] => 0
            [cms_before] =>
            [cms_after] =>
            [cms_guid] => 0E3B180C-F4AA-484F-A19D-318E6D4D2A6C
            [cms_title]=>ドシエA
            [レベル]=>配列
                ((
                    [0]=>配列
                        ((
                            [cms_parent_node] => 0E3B180C-F4AA-484F-A19D-318E6D4D2A6C
                            [cms_before] =>
                            [cms_after] =>
                            [cms_guid] => D94840DC-7CD8-E7AA-7C69-A237306D24E6
                            [cms_title]=>ドシエAA
                            [レベル]=>配列
                                ((
                                    [0]=>配列
                                        ((
                                            [cms_parent_node] => D94840DC-7CD8-E7AA-7C69-A237306D24E6
                                            [cms_before] =>
                                            [cms_after] =>
                                            [cms_guid] => 1B20700B-70F0-FFE5-47AC-3DA35460C702
                                            [cms_title]=>ドシエAAA
                                            [レベル]=>配列
                                                ((
                                                )。
                                        )。
                                )。
                        )。
                )。
        )。
    [1]=>配列
        ((
            [cms_parent_node] => 0
            [cms_before] =>
            [cms_after] => 1CBF252E-0C28-36E9-D5DF-66F361FB00E9
            [cms_guid] => 57F64452-B6BE-3039-F30A-1BE413936A71
            [cms_title]=>ドシエC
            [レベル]=>配列
                ((
                )。
        )。
    [2]=>配列
        ((
            [cms_parent_node] => 0
            [cms_before] =>
            [cms_after] => 57F64452-B6BE-3039-F30A-1BE413936A71
            [cms_guid] => 44269A70-FF01-EB17-7437-8B1EFB746E0D
            [cms_title]=>ドシエD
            [レベル]=>配列
                ((
                )。
        )。
    [3]=>配列
        ((
            [cms_parent_node] => 0
            [cms_before] =>
            [cms_after] => 0E3B180C-F4AA-484F-A19D-318E6D4D2A6C
            [cms_guid] => 1CBF252E-0C28-36E9-D5DF-66F361FB00E9
            [cms_title]=>ドシエB
            [レベル]=>配列
                ((
                )。
        )。
)。

戻り配列は次の順序である必要があります。

A
  AA
   AAA
B
C
D

結果:

配列
   ((
       [0]=>配列
           ((
               [cms_parent_node] => 0
               [cms_before] =>
               [cms_after] =>
               [cms_guid] => 0E3B180C-F4AA-484F-A19D-318E6D4D2A6C
               [cms_title]=>ドシエA
               [レベル]=>配列
                   ((
                       [0]=>配列
                           ((
                               [cms_parent_node] => 0E3B180C-F4AA-484F-A19D-318E6D4D2A6C
                               [cms_before] =>
                               [cms_after] =>
                               [cms_guid] => D94840DC-7CD8-E7AA-7C69-A237306D24E6
                               [cms_title]=>ドシエAA
                               [レベル]=>配列
                                   ((
                                       [0]=>配列
                                           ((
                                               [cms_parent_node] => D94840DC-7CD8-E7AA-7C69-A237306D24E6
                                               [cms_before] =>
                                               [cms_after] =>
                                               [cms_guid] => 1B20700B-70F0-FFE5-47AC-3DA35460C702
                                               [cms_title]=>ドシエAAA
                                               [レベル]=>配列
                                                   ((
                                                   )。

                                           )。

                                   )。

                           )。

                   )。

           )。


    [1]=>配列
        ((
            [cms_parent_node] => 0
            [cms_before] =>
            [cms_after] => 0E3B180C-F4AA-484F-A19D-318E6D4D2A6C
            [cms_guid] => 1CBF252E-0C28-36E9-D5DF-66F361FB00E9
            [cms_title]=>ドシエB
            [レベル]=>配列
                ((
                )。

        )。

       [2]=>配列
           ((
               [cms_parent_node] => 0
               [cms_before] =>
               [cms_after] => 1CBF252E-0C28-36E9-D5DF-66F361FB00E9
               [cms_guid] => 57F64452-B6BE-3039-F30A-1BE413936A71
               [cms_title]=>ドシエC
               [レベル]=>配列
                   ((
                   )。

           )。

       [3]=>配列
           ((
               [cms_parent_node] => 0
               [cms_before] =>
               [cms_after] => 57F64452-B6BE-3039-F30A-1BE413936A71
               [cms_guid] => 44269A70-FF01-EB17-7437-8B1EFB746E0D
               [cms_title]=>ドシエD
               [レベル]=>配列
                   ((
                   )。

           )。


   )。
4

1 に答える 1

0

このようなもの。

function reorder($folders) {
  $current = null;
  $after = array();

  foreach ($folders as &$folder) {
    if ($folder['cms_after']) $after[$folder['cms_after']] =& $folder;
      else $current =& $folder;
  }

  $list = array();
  while ($current) {
    $list[] = $current;
    $current = isset($after[$current['cms_guid']]) ? $after[$current['cms_guid']] : null;
  }

  return $list;
}

質問をするスキルに取り組みます...

于 2012-12-28T15:13:47.057 に答える