0

我想更改递归数组的值。

一个数组提供path要更改的变量:

$scopePath代表改变的路径。

例如if $scopePath==Array("owners","products","categories")

和 $tag="价格";

我想$value["owners"]["products"]["categories"]["tag"]改为true

    $u=$value;
    foreach ($scopePath as $i => $s) {
        if (!isset($u[$s]))
            $u[$s]=Array();
        $u=$u[$s];
    }
    $u[$tag]=true;

我知道问题出在 $u=$u[$s] 行,因为这会更改对 $u 的引用,但我不知道如何修复它。

4

2 回答 2

1

要更改您的$value变量,您必须&在第一行使用:

$u = &$value;
于 2013-06-11T10:20:19.997 回答
1

在. _ $u_$value$value

$u = &$value;
foreach($scopePath as $i => $s) {
    if (!isset($u[$s]))
        $u[$s]=Array();
    $u = &$u[$s];
}
$u["tag"] = true;

什么时候$scopePath = array("owners","products","categories")

print_r($value);

将输出

Array
(
    [owners] => Array
        (
            [products] => Array
                (
                    [categories] => Array
                        (
                            [tag] => 1
                        )
                )
        )
)
于 2013-06-11T10:20:42.717 回答