${$var}
のような動的変数を使用しないことをおすすめします。 あなたが望むのは、キーのパスに従って多次元連想配列を変更することです。
<?php
$myArray = array(...); // multi-dimensional array
$myVarPath = array('my1', 'my11', 'my111');
setValueFromPath($myArray, $myVarPath);
function getValueFromPath($arr, $path)
{
// todo: add checks on $path
$dest = $arr;
$finalKey = array_pop($path);
foreach ($path as $key) {
$dest = $dest[$key];
}
return $dest[$finalKey];
}
function setValueFromPath(&$arr, $path, $value)
{
// we need references as we will modify the first parameter
$dest = &$arr;
$finalKey = array_pop($path);
foreach ($path as $key) {
$dest = &$dest[$key];
}
$dest[$finalKey] = $value;
}
これは簡単な手順の例です。階層配列を配置し、この関数をクラス内に配置することができます。
これらは可変変数と呼ばれます。あなたは決してそれらを使うべきではありません。あなたが解決しようとしている根本的な問題は何ですか? –
私はフレームワークを使用していない人のためにプロジェクトを行い、自分自身を助けるためにいくつかの機能を構築する必要があります。そのために、カテゴリのリストを取得し、無制限レベルのツリー(親 - >子)を作成する特定の関数を作成しようとします。私はいくつかのポイント(魔法使いからの再帰関数では、私は順序配列でいくつかの配列変数を設定する必要があります)になる。 – Michael
..私は設定する必要がある配列varへのパスを構築する必要があります。 – Michael