PHP 学习笔记(2)
<?php
$foo = "0"; // $foo 是字符串 (ASCII 48)
$foo += 2; // $foo 现在是一个整数 (2)
$foo = $foo + 1.3; // $foo 现在是一个浮点数 (3.3)
$foo = 5 + "10 Little Piggies"; // $foo 是整数 (15)
$foo = 5 + "10 Small Pigs"; // $foo 是整数 (15)
?>
var_dump() 打印变量以及类型。
可以将变量放置在双引号中的方式来代替将变量转换成字符串:
Warning
PHP 4.2.0 以及后续版本中,PHP 指令 register_globals 的默认值为 off。这是 PHP 的一个主要变化。让 register_globals 的值为 off 将影响到预定义变量集在全局范围内的有效性。例如,为了得到 DOCUMENT_ROOT 的值,将必须使用 $_SERVER[‘DOCUMENT_ROOT‘] 代替$DOCUMENT_ROOT,又如,使用 $_GET[‘id‘] 来代替 $id 从 URL http://www.example.com/test.php?id=3 中获取 id 值,亦或使用$_ENV[‘HOME‘] 来代替 $HOME 获取环境变量 HOME 的值。
更多相关信息,请阅读 register_globals 的配置项条目,安全一章中的使用 Register Globals,以及 PHP ? 4.1.0 和 ? 4.2.0 的发布公告。
如果有可用的 PHP 预定义变量那最好用,如超全局数组。
静态声明是在编译时解析的。
上例演示了当把一个引用赋值给一个静态变量时,第二次调用 &get_instance_ref() 函数时其值并没有被记住。
要将可变变量用于数组,必须解决一个模棱两可的问题。这就是当写下 $$a[1] 时,解析器需要知道是想要 $a[1] 作为一个变量呢,还是想要$$a 作为一个变量并取出该变量中索引为 [1] 的值。解决此问题的语法是,对第一种情况用 ${$a[1]},对第二种情况用 ${$a}[1]。
类的属性也可以通过可变属性名来访问。可变属性名将在该调用所处的范围内被解析。例如,对于 $foo->$bar 表达式,则会在本地范围来解析$bar 并且其值将被用于 $foo 的属性名。对于 $bar 是数组单元时也是一样。
Example #1 可变属性示例
<?php
class foo {
var $bar = ‘I am bar.‘;
var $arr = array(‘I am A.‘, ‘I am B.‘, ‘I am C.‘);
var $r = ‘I am r.‘;
}
$foo = new foo();
$bar = ‘bar‘;
$baz = array(‘foo‘, ‘bar‘, ‘baz‘, ‘quux‘);
echo $foo->$bar . "\n";
echo $foo->$baz[1] . "\n";
$start = ‘b‘;
$end = ‘ar‘;
echo $foo->{$start . $end} . "\n";
$arr = ‘arr‘;
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.
变量名中的点和空格被转换成下划线。例如 <input name="a.b" /> 变成了 $_REQUEST["a_b"]。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。