PHP 学習 - 変数変数

WBOY
リリース: 2016-06-13 12:27:43
オリジナル
988 人が閲覧しました

PHP の学習 - 変数変数

変数変数

変数変数名を使用すると非常に便利な場合があります。つまり、変数の変数名を動的に設定して使用することができます。通常の変数は宣言によって設定されます。例:

<?<span style="color: #000000;">php</span><span style="color: #800080;">$a</span> = 'hello'<span style="color: #000000;">;</span>?>
ログイン後にコピー

可変変数は、通常の変数の値を可変変数の変数名として取得します。上記の例では、hello に 2 つのドル記号 ($) が使用されており、可変変数として使用できます。例:

<?<span style="color: #000000;">php$</span><span style="color: #800080;">$a</span> = 'world'<span style="color: #000000;">;</span>?>
ログイン後にコピー

この時点では、両方の変数が定義されています: $a 内容は "hello" と $hello の内容は「world」です。したがって、次のステートメント:

<?<span style="color: #000000;">php</span><span style="color: #0000ff;">echo</span> "<span style="color: #800080;">$a</span> ${<span style="color: #800080;">$a</span>}"<span style="color: #000000;">;</span>?>
ログイン後にコピー

は、次のステートメントとまったく同じ結果を出力します:

<?<span style="color: #000000;">php</span><span style="color: #0000ff;">echo</span> "<span style="color: #800080;">$a</span> <span style="color: #800080;">$hello</span>"<span style="color: #000000;">;</span>?>
ログイン後にコピー

どちらも次の結果を出力します。 こんにちは、世界。

配列で可変変数を使用するには、あいまいさを解決する必要があります。これは、$$a[1]$a[1] として記述するときにパーサーが知っておく必要があることです。変数の場合でも、$$a を変数として使用し、変数内のインデックス [1] の値を取り出します。この問題を解決する構文は、最初のケースでは ${$a[1]} を使用し、2 番目のケースでは ${$a を使用します。 }[ 1]

クラス プロパティには、可変プロパティ名を通じてアクセスすることもできます。変更可能なプロパティ名は呼び出しのスコープ内で解決されます。たとえば、$foo->$bar 式の場合、$bar はローカル スコープとその値で解析されます。 $foo の属性名に使用されます。 $bar が配列単位の場合も同様です。

中括弧を使用して属性名を明確に区切ることもできます。プロパティが配列内にある場合、プロパティ名に複数の部分が含まれている場合、またはプロパティ名に不正な文字 (json_decode() や SimpleXML など) が含まれている場合に最も役立ちます。

例 #1 変数属性の例

<?<span style="color: #000000;">php</span><span style="color: #0000ff;">class</span><span style="color: #000000;"> foo {    </span><span style="color: #0000ff;">var</span> <span style="color: #800080;">$bar</span> = 'I am bar.'<span style="color: #000000;">;    </span><span style="color: #0000ff;">var</span> <span style="color: #800080;">$arr</span> = <span style="color: #0000ff;">array</span>('I am A.', 'I am B.', 'I am C.'<span style="color: #000000;">);    </span><span style="color: #0000ff;">var</span> <span style="color: #800080;">$r</span>   = 'I am r.'<span style="color: #000000;">;}</span><span style="color: #800080;">$foo</span> = <span style="color: #0000ff;">new</span><span style="color: #000000;"> foo();</span><span style="color: #800080;">$bar</span> = 'bar'<span style="color: #000000;">;</span><span style="color: #800080;">$baz</span> = <span style="color: #0000ff;">array</span>('foo', 'bar', 'baz', 'quux'<span style="color: #000000;">);</span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$foo</span>-><span style="color: #800080;">$bar</span> . "\n"<span style="color: #000000;">;</span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$foo</span>-><span style="color: #800080;">$baz</span>[1] . "\n"<span style="color: #000000;">;</span><span style="color: #800080;">$start</span> = 'b'<span style="color: #000000;">;</span><span style="color: #800080;">$end</span>   = 'ar'<span style="color: #000000;">;</span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$foo</span>->{<span style="color: #800080;">$start</span> . <span style="color: #800080;">$end</span>} . "\n"<span style="color: #000000;">;</span><span style="color: #800080;">$arr</span> = 'arr'<span style="color: #000000;">;</span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$foo</span>-><span style="color: #800080;">$arr</span>[1] . "\n"<span style="color: #000000;">;</span><span style="color: #0000ff;">echo</span> <span style="color: #800080;">$foo</span>->{<span style="color: #800080;">$arr</span>}[1] . "\n"<span style="color: #000000;">;</span>?>
ログイン後にコピー

上記のルーチンは次のように出力します。 >

I am bar.<span style="color: #000000;">I am bar</span>.<span style="color: #000000;">I am bar</span>.<span style="color: #000000;">I am r</span>.<span style="color: #000000;">I am B</span>.
ログイン後にコピー
例 2 変数属性の例

<?<span style="color: #000000;">php  </span><span style="color: #008000;">//</span><span style="color: #008000;">You can even add more Dollar Signs</span>  <span style="color: #800080;">$Bar</span> = "a"<span style="color: #000000;">;  </span><span style="color: #800080;">$Foo</span> = "Bar"<span style="color: #000000;">;  </span><span style="color: #800080;">$World</span> = "Foo"<span style="color: #000000;">;  </span><span style="color: #800080;">$Hello</span> = "World"<span style="color: #000000;">;  </span><span style="color: #800080;">$a</span> = "Hello"<span style="color: #000000;">;  </span><span style="color: #800080;">$a</span>; <span style="color: #008000;">//</span><span style="color: #008000;">Returns Hello</span>  $<span style="color: #800080;">$a</span>; <span style="color: #008000;">//</span><span style="color: #008000;">Returns World</span>  $$<span style="color: #800080;">$a</span>; <span style="color: #008000;">//</span><span style="color: #008000;">Returns Foo</span>  $$$<span style="color: #800080;">$a</span>; <span style="color: #008000;">//</span><span style="color: #008000;">Returns Bar</span>  $$$$<span style="color: #800080;">$a</span>; <span style="color: #008000;">//</span><span style="color: #008000;">Returns a</span><span style="color: #000000;">  $$$$$</span><span style="color: #800080;">$a</span>; <span style="color: #008000;">//</span><span style="color: #008000;">Returns Hello</span>  $$$$$$<span style="color: #800080;">$a</span>; <span style="color: #008000;">//</span><span style="color: #008000;">Returns World  //... and so on ...//</span>?>
ログイン後にコピー
例 3 変数属性の例

<?<span style="color: #000000;">php</span><span style="color: #008000;">//</span><span style="color: #008000;"> Given these variables ...</span><span style="color: #800080;">$nameTypes</span>    = <span style="color: #0000ff;">array</span>("first", "last", "company"<span style="color: #000000;">);</span><span style="color: #800080;">$name_first</span>   = "John"<span style="color: #000000;">;</span><span style="color: #800080;">$name_last</span>    = "Doe"<span style="color: #000000;">;</span><span style="color: #800080;">$name_company</span> = "PHP.net"<span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> Then this loop is ...</span><span style="color: #0000ff;">foreach</span>(<span style="color: #800080;">$nameTypes</span> <span style="color: #0000ff;">as</span> <span style="color: #800080;">$type</span><span style="color: #000000;">)  </span><span style="color: #0000ff;">print</span> ${"name_<span style="color: #800080;">$type</span>"} . "\n"<span style="color: #000000;">;</span><span style="color: #008000;">//</span><span style="color: #008000;"> ... equivalent to this print statement.</span><span style="color: #0000ff;">print</span> "<span style="color: #800080;">$name_first</span>\n<span style="color: #800080;">$name_last</span>\n<span style="color: #800080;">$name_company</span>\n"<span style="color: #000000;">;</span>?>
ログイン後にコピー
上記のルーチンは次のように出力します:

<span style="color: #000000;">JohnDoePHP</span>.<span style="color: #000000;">netJohnDoePHP</span>.net
ログイン後にコピー

抜粋: http://php.net/manual/zh/functions .variable -functions.php

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート