0

再帰配列の値を変更したいと思います。

1 つの配列は、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 に答える