0

我有一个像这样的多维数组

Array
(
    [59] => stdClass Object
        (
            [id] => 59
            [parent_id] => 0
            [name] => detalles de los
            [order] => 1

        )

    [60] => stdClass Object
        (
            [id] => 60
            [parent_id] => 0
            [name] => Fechas varias
            [order] => 2

        )

    [62] => stdClass Object
        (
            [id] => 62
            [parent_id] => 0
            [name] => seccion de fechas dependientes
            [order] => 3

        )

    [63] => stdClass Object
        (
            [id] => 6
            [parent_id] => 0
            [name] => tabbbbb
            [order] => 5
            [children] => Array
                (
                    [61] => stdClass Object
                        (
                            [id] => 61

                            [parent_id] => 63
                            [name] => Números varios
                            [order] => 5

                        )

                    [70] => stdClass Object
                        (
                            [id] => 70
                            [parent_id] => 63
                            [name] => tablas22
                            [order] => 6

                            [children] => Array
                                (
                                    [58] => stdClass Object
                                        (
                                            [id] => 58
                                            [parent_id] => 70
                                            [name] => datos demograficos
                                            [order] => 4

                                        )

                                )

                        )

                )

        )

)

我想删除条目 70

[70] => stdClass Object
                        (
                            [id] => 70
                            [parent_id] => 63
                            [name] => tablas22
                            [order] => 6

但我希望孩子 [58] 成为 [61] 的孩子,而 [70] 成为 [61] 的孩子

我该怎么做?我尝试取消设置,但它似乎不起作用

4

4 回答 4

0

您可以尝试以下方法

unset($array[63]->children[70]);
于 2012-10-03T12:33:29.627 回答
0

摆脱70这样做:

unset $yourArray[63]['children'][70];

您不能轻易更改节点密钥,因此您需要克隆它并取消设置旧的,即“重新输入”条目58成为61

$yourArray[61] = $yourArray[58];
unset( $yourArray[58] );
于 2012-10-03T12:34:11.993 回答
0
$child58 = $array[63]->children[70]->children[58];
unset($array[63]->children[70]->children);

$child70 = $array[63]->children[70];
unset($array[63]->children[70]);

$array[63]->children[61]->children = array(58 => $child58, 70 => $child70);
于 2012-10-03T12:37:11.320 回答
0

问题有点复杂,因为您有一个必须移动的数据结构,并且您也有表示该数据结构的实际数据,例如,每个 stdClass 都有一个 parent_id 属性,该属性指向有用的地方。

更正您的数据结构可能很容易,但这种结构来自某个地方,您最好更改此来源。

对于动作,只需复制和删除。

首先将 [58] 移动到新位置:

$array[63]->children[61]->children[58] = $array[63]->children[70]->children[58];
unset ($array[63]->children[70]->children[58]);

然后移动 70:

$array[63]->children[61]->children[70] = $array[63]->children[70];
unset ($array[63]->children[70]);
于 2012-10-03T12:39:57.120 回答