0

XML ドキュメントを連想配列に変換しようとしています。配列の名前を xml ドキュメントのルート ノードにします。でこの情報を取得し$xml->getName()ます。

このステートメントを使用して空の配列を作成することを考えましたが、機能しません。

$($xml->getName()) = array();

他の方法は、一時変数を作成して名前を変更する必要があります$xml->getName()。PHPでこれを行う方法はありますか?

4

2 に答える 2

3

次の方法で作成できます。

${$xml->getName()} = array();

実行時エラーを回避するために、名前を検証して PHP 変数名の基準を満たしていることを確認することもできます。

于 2011-06-21T16:49:41.207 に答える
1

ジョージは正しい${$xml->getName()} = array();です。基本的には、あなたが求めていることを行うことができます。

lonesomeday が示唆したように、これは悪い考えです。そのすべての機能を関数にラップし、単にそれをより大きなコンテキストに戻すのが最善です。慣れていない場合は、配列のキーにしてください。ただし、問題は次のとおりです。

  1. この機能を抽象化することはできません-これを関数またはクラスの一部にしたいと想像してください(とにかく考えるべきです)、呼び出し元の関数のクラス/コンテキストに $root をどのように認識させますかXMLへの参照になりましたか?
  2. スクリプトに複数のファイルをロードすることはできません。 で始まる 2 つのファイルがある場合<root>、それらは互いに殺し合います (これにより、配列キーの使用さえ妨げられます)。
  3. これによりデバッグの問題が発生します。最低限、XML 構文と PHP 構文に問題がないことを確認する必要があります。これにより、デバッグとメンテナンス サイクルの時間が長くなり、技術的な肥大化につながります。
  4. 定義上、これは破壊的予期しない動作です。次のプログラマーにはすぐにはわからない方法で環境に影響を与え、他のプログラマーが設定した変数を設定解除する可能性があります。
于 2011-06-21T17:01:23.850 に答える