<?php$a=\"大众ABC\"大众;$b =&$a;echo $a;//这里输出:ABC echo $b;//这里输出:ABC $b=\公众EFG\"大众;echo $a;//这里$a的值变为EFG 以是输出EFG echo $b;//这里输出EFG ?>

函数的引用

<?phpfunction &test(){ static $b=0;//申明一个静态变量 $b=$b+1; echo $b; return $b; }}$a=test();//这条语句会输出 $b的值 为1 $a=5;$a=test();//这条语句会输出 $b的值 为2$a=&test();//这条语句会输出 $b的值 为3 $a=5;$a=test();//这条语句会输出 $b的值 为6?>

解析:用上面的例子来阐明便是 $a=test()办法调用函数,只是将函数的值赋给$a而已, 而$a做任何改变,都不会影响到函数中的$b,而通过$a=&test()办法调用函数呢, 他的浸染是 将return $b中的 $b变量的内存地址与$a变量的内存地址 指向了同一个地方 即产生了相称于这样的效果($a=&b;) 以是改变$a的值 也同时改变了$b的值 以是在实行了 $a=&test(); $a=5; 往后,$b的值变为了5

这里是为了让大家理解函数的引用返回才利用静态变量的,实在函数的引用返回多用在工具中。

phpfun怎么用php的一些奇淫巧技 Angular

工具的引用

<?phpclass a{ var $abc=\"大众ABC\"大众;}$b=new a;$c=$b;echo $b->abc;//这里输出ABC echo $c->abc;//这里输出ABC $b->abc=\"大众DEF\"大众;echo $c->abc;//这里输出DEF?>

以上代码是在PHP5中的运行效果 在PHP5中 工具的复制是通过引用来实现的。
上列中$b=new a; $c=$b; 实在等效于$b=new a; $c=&$b; PHP5中默认便是通过引用来调用工具, 但有时你可能想建立一个工具的副本,并希望原来的工具的改变不影响到副本 . 为了这样的目的,PHP定义了一个分外的方法,称为__clone.

foreach ($arr as &$v) { // 一系列判断得到你想要的数据 if (...) { // 复写值为你想要的 $v['youwantbyjudge'] = 'TIGERB' } ... // 干掉你不想要的构造 unset($v['youwantdel']);}unset($v);// 末了我们得到我们的目标数组$arr

php中的匿名函数和闭包

匿名函数

php中的匿名函数(Anonymous functions), 也叫闭包函数(closures), 许可 临时 创建一个没有指定名称的函数。
常用作回调函数(callback)参数的值。

$closureFunc = function($str){echo $str; }; $closureFunc(\"大众hello world!\"大众);

匿名函数的利用实现类的【

class One{ private $closure; public function __construct($closure) { if ($closure) { $this->closure = $closure(); } } public function doSomething() { if ($this->closure) { // 用的时候再实例化 // 实现

将匿名函数放在普通函数中,也可以将匿名函数返回,这就构成了一个大略的闭包 。

在匿名函数中引用局部变量,须要引用一个php的关键字 use

function closureFunc1(){ | function closureFunc2(){ $func = function(){ | $num = 1; echo \公众hello\公众; | $func = function() use($num){ }; | echo $num; $func(); | };} | $func();closureFunc1(); | }//输出: hello closureFunc2(); //输出: 1,不引用use报//Notice: Undefined variable: num

关联数组做map

如果我们在客户端做决策,常日我们会判断不同的高下文在选择不同策略,常日会利用if或者switch判断这种写法常日会涌现大量的if语句或者switch语句,常日这里可以利用一个map来映射不同的策略,像下面这样

class One{ private $map = [ 'a' => 'namespace\A', // 带上命名空间,由于变量是动态的 'b' => 'namespace\B', 'c' => 'namespace\C' ]; public function doSomething() { ... $instance = new $this->map[$strategy];// $strategy是'a'或'b'或'c' $instance->doSomething(...); ... }}