0

変数に格納されている配列値への「パス」があり、値を設定しようとしています。私がやろうとしていることはこれです:

$array['Breaks'][1]['In'] = "XXX";

しかし、私は['Breaks'][1]['In']変数に保存しました。だから私は本質的にこのようなことをしようとしています:

$path = "['Breaks'][1]['In']";
$array.$path = "XXX";

ただし、これは機能しません。また、これを正しく機能させる方法が正確にはわかりません。

助言がありますか?

4

3 に答える 3

2

パス文字列がユーザーによって変更可能でないか、以前に解析されていない限り、次のようにすることができます。

eval("\$array".$path." = 'Value';");
于 2012-11-02T21:14:07.133 に答える
1

$ path変数の各コンポーネントをそれ自体の変数または配列(以下の$ pathArray)に抽出してみてください。したがって、$ pathArray [0]を'Breaks'に設定したり、$ pathArray [1]を1に設定したりすると、次のようになります。

$array[$pathArray[0]][$[pathArray[1]][$[pathArray[2]] = "XXX";

これは物事を進めるための珍しい方法のように思えますが、アプローチを完全に再考する価値があるかもしれません。

于 2012-11-02T20:26:25.220 に答える
1

これをやってみてください、

//This solution works if you are sure the length of $path_arr is going to be 3
$path = "['Breaks'][1]['In']";
$path_arr = explode(']', str_replace(array("['", "'", "["), '', $path)); 

$array[$path_arr[0]][$path_arr[1]][$path_arr[2]] = "XXX";
var_dump($array);

デモ

于 2012-11-02T20:30:51.277 に答える