0

タイトルは少しわかりにくいかもしれません。これは私の問題です:

変数名を別の変数に保持してから、最初の変数の内容を読み取ることができることは知っています。これは私が意味するものです:

$variable = "hello"
$variableholder = 'variable'
echo $$variableholder;

「こんにちは」と表示されます。今、私はこれに問題があります:

$somearray = array("name"=>"hello");
$variableholder = "somearray['name']"; //or $variableholder = 'somearray[\'name\']';
echo $$variableholder;

これにより、PHP エラーが発生します ($somearray['name'] は未定義の変数であると表示されます)。これが可能かどうか教えてください。私は何か間違ったことをしています。または、これが明らかに不可能な場合は、同様のことを行う別の解決策を教えてもらえますか?

前もって感謝します。

4

2 に答える 2

1

とりあえず、以下のようなことしか思い浮かびませんでした。

<?php 
    // literal are simple
    $literal = "Hello";
    $vv = "literal";
    echo $$vv . "\n";
    // prints "Hello"


    // for containers it's not so simple anymore
    $container = array("Hello" => "World");
    $vv = "container";

    $reniatnoc = $$vv;
    echo $reniatnoc["Hello"] . "\n";
    // prints "World"
 ?>

ここでの問題は、( php からの引用: オンザフライで配列値にアクセスする):

PHP 言語の Grammar では、変数式の末尾に添字表記のみを許可し、一般的な式では許可しません。これは、他のほとんどの言語で機能する方法です。

PHP はどこでも添え字表記を許可しますか?

echo $$vv["Hello"]

補足:変数変数 を使用することは、本番環境で使用するのには適切ではないと思います。

于 2012-06-28T00:12:52.073 に答える
1

これはどう?(注: 変数変数は goto と同じくらい悪い)

$variablename = 'array';
$key = 'index';

echo $$variablename[$key];
于 2012-06-28T00:52:54.147 に答える