php变量怎么交换,在foreach循环的结果能帮解释下输出的结果原理是什么?
HP中的&传值引用的问题,在foreach循环的结果能帮解释下输出的结果原理是什么?
代码如下:
$arr = array('one','two','three');
foreach ($arr as &$value){ echo 'Value:'.$value.'
'; }
foreach ($arr as $value){ echo 'Value:'.$value.'
'; }
?>
输出结果:
Value:one
Value:two
Value:three
Value:one
Value:two
Value:two
第一次带&的foreach并没有改变数组的内容。。
而是最后一次循环$value引用了数组的最后一个项 (可以测试一下,在第一次循环结束后unset($value),第二次循环的结果就不会有变化),
在你第二个foreach也是使用的$value变量,这才造成了怪异的问题(可以换个变量,比如$val,输出的数组就不会有变化)。
第二个foreach是赋值给$value,但是这时的$value是引用的数组的最后一个值,
所以
第一次循环把one赋值给了最后一个值,
第二次把two赋值给最后一个,
第三次也就是最后一个已经在第二次循环被赋值为two,所以仍然是two。
php中什么变量是非法的?
php中,数字在$变量标识符后是非法的。
在PHP语言中,变量都是保存在哈希表中,称为变量符号表,其中变量名为哈希表的键,变量名对应的容器zval的指针为哈希表中的值。所有全局变量放在一张主符号表中(也就是数组$GLOBALS对应的哈希表)。
所以,PHP语言有个特性,变量在命名时,$变量标识符后不能以数字开头。
php可以调用另一个对象变量吗?
php可以调用另一个对象变量php中可以用include或者require函数引入另一个文件。 区别在于前者导入错误不影响后续代码执行,前提是还要保证文件,只能导入一次。
php中变量可以分为什么和什么两种类型的变量?
存在8种变量类型,可以分为三类* 标量类型: boolean、integer、float(double)、string* 复合类型: array、object* 特殊类型: resource、NULL
PHP中对变量使用单引号和双引号的区别?
在PHP中,单引号和双引号大多数情况下没有区别,但是在一些特殊用法上双引号会多一些功能.
双引号可以直接解析变量而单引号不会
例如:
$a='123';
$b='$a';
$c="$a";
echo $b; //输出$a
echo $c; //输出123
特别注意以下例子
echo '$a的值是'.$a; //输出:$a的值是123 (真正想要的结果)
echo "$a的值是".$a; //输出:123的值是123
上面这种要输出的字符串有和变量重名的,就必须用单引号避免解析.
在混合编写代码时,单双引号可以互补避免出错.
例如:
$html1='<div style="color:red">你好世界</div>';
$html2='<div onclick=alert("你好世界");>点击</div>';