解决方案 »
- $_SERVER['HTTP_PROXY_USER']是什么意思啊
- mysql如何筛选act_url有实值的所有记录?
- PHP转成exe文件,急,谢谢
- php如何判断js或css文件的代码格式是gbk还是utf8(3)?
- 如何重定向xml中url?
- 寻WYSIWYG操作过程及相关实例!!!
- 如何同时删除多条记录?
- 有谁知道vbb3的记录用户登录信息是怎么实现的么?session?session_table?
- 请问哪位老大知道怎么用PHP控制IIS新建Web站点吗?? (200分相送)
- 如何用PHP在页面里调用word编辑器,使之能在网页上编辑WORD文档?
- 用户注册问题
- 求教,分析他人的源代码时,一个很长的类,实在让人痛苦。
$a='abc';
$a1=&$a;
$a2=$a;
echo $a.$a1.$a2; // 此时三个都是 'abc'
$a1='123';
echo $a.$a1.$a2; // 此时$a,$a1 是 '123',而$a2是 'abc';
取地址操作符就是让两个变量指向同一个地址,改变其中哪一个都会直接的改变这个值
}// 相当于, 仅做比喻,不能使用function fun() {
return &$result;
}也就是说(function)加不加&,仅对返回结果有作用你说的2个例子:$directory = &drupal_static(__FUNCTION__, '');function drupal_static_reset($name = NULL) {
drupal_static($name, NULL, TRUE);
}前一个是赋值,加不加其实都是一样引用的,标准是要提倡使用显时声明而后一个本身就仅仅运算,要什么&,给谁引用?
测试代码
<?php$foo = 'foo';function &foo() {
return $GLOBALS['foo'];
}// 不提倡,要显时声明为引用
$foo1 = foo();
// 正确格式
$foo2 = &foo();// 虽然可以用
var_dump($foo1 === $foo2);// 正确调用
foo();// 语法错误
&foo();
我觉得function drupal_static_reset($name = NULL) {
drupal_static($name, NULL, TRUE);
}这段代码的作用是清空 没看见函数名里有个reset么
1. 变量的引用赋值: $a = &$b
2. 函数调用时的引用参数传递
1) 早期php是在调用时通过&符号传递引用类型的变量, 比如: func(&$arg);
2) 后来, 函数的引用类型参数被规定为需要在函数声明时定义, 不如: function func(&$arg);
注: 引用声明时定义引用类型参数后, 运行时引用参数传递被废弃, 需要在php.ini中增加allow_call_time_pass_reference来开启.
3. 函数返回引用类型, 这种应用方式需要声明函数时, 在函数名前增加&符号, 并且, 在调用时, 要用引用赋值方式, 比如:
function &func() {
return $a;
}
$a = func(); //这种调用方式得到的不是引用传值
$a =& func(); //这样调用才是引用传值
简而言之, 就是让函数的返回一个引用类型的值, 一个更实际的例子:
$a = 1;
function &func(&$a) {
return $a;
}
$b = func($a);
$c =& func($a);
$b = 2;
echo "a: $a, b: $b, c: $c. <br />\n";
//输出a: 1, b: 2, c: 1.
//可见对$b的修改不会影响$a
$c = 3;
echo "a: $a, b: $b, c: $c. <br />\n";
//输出a: 3, b: 2, c: 3.
//可见对$c的修改会影响$a4. global和static两个关键字
1) global用来声明函数内部要使用一个全局变量, 其实这里隐式的创建了一个引用, 比如, global $a;就是在本地名称空间中创建一个名字a, 让它指向全局空间中$a变量的值.
2) static关键字也是隐式创建了一个引用, 这里谈的static是指在函数内部声明静态变量的用法, 比如
function func() {
static $a = 1;
echo $a ++ . ", ";
}
while($a ++ < 10) func();
//输出结果: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
这种用法会在一次请求(就是php一次完整的解释执行)过程中, 该变量只会被初始化一次, 每次函数调用结束后, 函数内的静态变量不会被销毁(而其他的局部变量会被销毁), 下一次函数调用时, 又重复利用上一次处理后的结果.