PHP语法$ {"{$ type} _method"}

Zac*_*ack 2 php

我一直在阅读PHP5书,作者通常使用这种语法

${"{$something}_somethingelse"};
Run Code Online (Sandbox Code Playgroud)

我不知道这意味着什么.它是否动态生成变量名称?

有人帮帮我吗?

And*_*ore 9

它是一种称为变量变量的语言功能.

考虑以下代码:

$a = 'hello';
Run Code Online (Sandbox Code Playgroud)

这很简单.它创建变量$a并将其值设置为'hello'.

让我们继续:

$$a = 'world';
${$a} = 'world';
Run Code Online (Sandbox Code Playgroud)

基本上,因为$a = 'hello',这两个陈述相当于:

$hello = 'world';
Run Code Online (Sandbox Code Playgroud)

所以以下内容:

echo "$a ${$a}";
Run Code Online (Sandbox Code Playgroud)

相当于做:

echo "$a $hello";
Run Code Online (Sandbox Code Playgroud)

背带 { }

括号用于防止出现歧义问题.考虑以下:

$$a[1] = 'hello world';
Run Code Online (Sandbox Code Playgroud)

是否要分配以值的名称命名的变量,$a[1]或者是否要分配1名为after的变量的索引$a

对于第一个选择,您可以这样写:

${$a[1]} = 'hello world';
Run Code Online (Sandbox Code Playgroud)

对于第二种选择:

${$a}[1] = 'hello world';
Run Code Online (Sandbox Code Playgroud)

你的榜样

现在,为你的例子.

让我们考虑一下:

$something = 'hello';
Run Code Online (Sandbox Code Playgroud)

使用您的示例:

${"{$something}_somethingelse"} = 'php rocks';
Run Code Online (Sandbox Code Playgroud)

基本上相当于做:

$hello_somethingelse = 'php rocks';
Run Code Online (Sandbox Code Playgroud)

  • 请记住,变量变量通常是一个坏主意,因为它通常是数组(或对象)的工作. (2认同)