标题:echo "{${phpinfo()}}" 可以输出php环境信息,何故?
只看楼主
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
结帖率:72.73%
已结贴  问题点数:0 回复次数:15 
echo "{${phpinfo()}}" 可以输出php环境信息,何故?
程序代码:
<?php
function test($str)
{
  echo $str;
}

test("{${phpinfo()}}");
?>

执行上面的代码,竟然可以显示出phpinfo();打印出的信息,何故?

附:

双引号 里的东西 输入的时候能判断是否 包含 变量,如果包含 变量 就一起输出。 函数怎么也能被执行呢?
搜索更多相关主题的帖子: echo 何故 phpinfo 环境 
2010-06-07 20:57
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
得分:0 
没人回复,楼主很生气...

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2010-06-07 22:08
笨笨林
Rank: 6Rank: 6
等 级:贵宾
威 望:21
帖 子:482
专家分:408
注 册:2007-7-28
得分:7 
test("{${phpinfo()}}");
在这里,${phpinfo()}作为参数时,已经不是一个变量了。
在PHP中,变量名是由字母,数字,下划线开始的。所以,就算以 $ 开始,也不能当作变量处理。

可能这个回答有误。会再查相关资料

[ 本帖最后由 笨笨林 于 2010-6-8 07:49 编辑 ]

程序授权说明:http://www./authorization.php  无路难开路难。  帮助别人是快乐的,也只有帮助别人,才能得到别人的帮助。互相帮助,才能共同进步。
2010-06-08 07:39
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
得分:0 
回复 3楼 笨笨林
这里与它做不做参数无关,你可以试试 echo "{${phpinfo()}}"

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2010-06-08 09:16
cnenc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:2913
专家分:514
注 册:2007-1-29
得分:7 
还记得 下面代码吗?

<?php
$name = 'aaa';
$$name= 'bbb';

echo $bbb;
?>

在PHP手册中就有.
2010-06-08 10:21
cnenc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:2913
专家分:514
注 册:2007-1-29
得分:0 
<?php
${test()} = 'ccc';

echo $bbb;

function test ()
{
    return 'bbb';
}

?>

运行后的输出值为 'ccc';

个人观点:
PHP 中变量的格式为:  $ + 变量名.
变量名: 变量名是由字母,数字,下划线.
那么,变量名除了直接写出来的 "字母,数字,下划线",
也可以用 变量代替,或者是某函数的返回值. 只要返回值符合 "字母,数字,下划线" 就可以了.

然后, {} 是"块"的意思. 是为了防止PHP 把函数名当作变量名而加上的 "定界符".


${test()}
  =>
$ + {test()}
  =>
$ + bbb
  =>
$bbb


2010-06-08 10:31
cnenc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:2913
专家分:514
注 册:2007-1-29
得分:0 
最后, 由于 phpinfo 是个比较特殊的函数.
执行此函数,  PHP 直接输出. 它的返回值是 bool

2010-06-08 10:35
redice
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
得分:0 
回复 6楼 cnenc
程序代码:
function test()
{
    echo "i am run!";
}

echo "{${test()}}";


不对吧,没有返回值的函数没什么也可以呢?  最外面的那两个{}为什么不能去掉呢?

鲲鹏数据 - 专业Web数据采集服务提供者
http://www.
2010-06-08 12:25
cnenc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:2913
专家分:514
注 册:2007-1-29
得分:0 

不对吧,没有返回值的函数没什么也可以呢?
======
不是可以不可以的问题.
echo "{${test()}}"; => echo $NULL ;
实际上,运行时会提示  PHP Notice:  Undefined variable:  in xxx.php....

而你看到的输出, 只是 test() 里面的 echo.

2010-06-08 14:09
cnenc
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:35
帖 子:2913
专家分:514
注 册:2007-1-29
得分:0 
修改 echo "{${test()}}";
为   var_dump("{${test()}}");
你是可以知道.
2010-06-08 14:10



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-309547-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.883524 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved