2

次の関数を想定して呼び出します。

function doSomething( &$someArray ) {
    // Do something to $someArray
}

$names=array("John", "Paul", "George", "Ringo");
doSomething($names);

関数内から参照される配列の名前(この場合は「names」)を取得する方法はありますか?配列変数の名前の関数に別の引数を追加するためにリファクタリングできることは知っていますが、それは単なるバグを招きます。ユースケースは、配列$ someSillyNameごとに、関数がデータベーステーブルsomeSillyNameにアクセスする必要がある場合です。

ありがとう。

4

2 に答える 2

4

いいえ。*その仕事をするために必要な情報がある
場合は、それを引数として渡します。"names"doSomething

*デバッグバックトレースと多くのイントロスペクションを使用できますが、それは非常識です。呼び出し元のスコープ内の変数名は、何にもまったく影響を与えないはずです。

于 2012-04-18T01:27:02.080 に答える
2

PHPでこれを行う方法はありません。

さらに、アプリケーションロジックに変数名を使用することは避けてください。想像してみてください。誰かがあなたの$nameを他の何かにリファクタリングします。次のように配列を修正できます。

$dbData = array(
    'names' => array("John", "Paul", "George", "Ringo")
);

これは、アプリケーションの他の部分でも役立ちます。本当にこの方法を使用したい場合は、この配列をカプセル化し、次のようなものを提供するクラスを作成することをお勧めしますgetDatabaseName();getData();

于 2012-04-18T01:35:03.580 に答える