そこで、XML ドキュメントを解析し、そこから SQL クエリを作成して、設定に応じて新しい行を更新または挿入できるクラスを作成しました。
スクリプトはネストされたブロックの量に関係なく動作する必要があるため、すべての値を入れている配列のパスは、次の例のように動的に作成されます。
$path = array('field1','field2');
$path = "['".implode("']['",$path)."']";
eval("\$array".$path."['value'] = 'test';");
基本的に、たとえば値が含まれていて、設定したい場合$path
、現在の配列の深さを示す配列が含まれています$path
main_table
field
$array['main_table']['field']['value']
'test'
ご覧のとおり、現在これを行うために eval を使用していますが、これは正常に機能します。evalを使わずにこれを行う方法があるかどうか疑問に思っています。
のような
$array{$path}['value'] = 'test';
ものですが、実際に機能するものです。
助言がありますか?
編集
私が代替手段を探している理由は、eval は悪い習慣だと思うからです。
2回目の編集
多くの誤解を招いていたため、実際のコードをダミー コードに変更しました。