別の配列の連続した再帰的キーに対応する配列を持っている場合、その "path"に値を代入する最良の方法は何ですか?例えば任意のディープアレイインデックスに割り当てますか?
:今、$some_array
は現時点で
array(
'a' => array(
'b' => array(
'c' => 'some value'
)))
に等しくなければならない、私は以下を使用しています
$some_array = array();
$path = array('a','b','c');
set_value($some_array,$path,'some value');
:
明らかfunction set_value(&$dest,$path,$value) {
$addr = "\$dest['" . implode("']['", $path) . "']";
eval("$addr = \$value;");
}
を、これは非常にナイーブでありますアプローチし、セキュリティ上のリスクを負うので、どうすればよいでしょうか?
パスが無効な場合はどうなりますか? – Matthew
@konforce - 上記の例のように、 '$ some_example'が空になると、それは割り当てられます。 –
私はそれを反映するために私の答えを更新しました。また、文字列値を配列で上書きすることもできますが、その動作が望ましくない場合は変更するのが簡単です。 – Matthew