PHP変数変数

伊谢尔伦
リリース: 2016-11-24 13:45:09
オリジナル
1208 人が閲覧しました

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

<?php
    $a = &#39;hello&#39;;
?>
ログイン後にコピー

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

<?php
    $a = &#39;world&#39;;
?>
ログイン後にコピー

このとき、$a の内容が「hello」、$hello の内容が「world」という 2 つの変数が定義されています。したがって、次のステートメント:

<?php
    echo "$a ${$a}";
?>
ログイン後にコピー

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

<?php
    echo "$a $hello";
?>
ログイン後にコピー

両方とも、hello world を出力します。

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

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

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

例 #1 変数属性の例

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

上記のルーチンは次の出力を行います:

I am bar.
I am bar.
I am bar.
I am r.
I am B.
ログイン後にコピー

警告

PHP 関数およびクラス メソッドでは、スーパーグローバル変数を変数変数として使用できないことに注意してください。 $this 変数も特殊な変数なので、動的に参照することはできません。


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