$first = array("a", "b" => array("c", "d" => array("e", "f")), "g", "h" => array("f"));
$second = array("b", "d", "f");
$string = "foobar";
上記のコードが与えられていると、$second
で定義されたインデックスで$first
の値を$string
の内容に設定するにはどうすればよいですか?意味は、この例では$first["b"]["d"]["f"] = $string;
でなければならないが、$second
と$first
の内容は任意の長さにすることができる。しかし、$second
は常に1次元です。ここで私が試したことは、計画どおりに動作していないようです:可変多次元配列の値に動的にアクセスする方法
$key = "";
$ptr = $first;
for($i = 0; $i < count($second); $i++)
{
$ptr &= $ptr[$second[$i]];
$key = key($ptr);
}
$first[$key] = $string;
これは適切な多次元インデックスの代わりに$first["f"] = $string;
を行います。私は、key
を使用すると、すでに移動したレベルを含む配列内の位置を見つけることができると考えていました。
どのようにして適切なキーに動的にアクセスできますか?次元の数が静的であれば、私はこれを管理することができました。
編集:また、私はeval
を使用しないこれを行う方法をしたいと思います。