有没有办法用一个增量运算符发布或每次增量多个变量。我有 4 个值,我需要增加一个值
$a = 1; $b = 3; $c = 45; $d = 10;
通常我们使用这种方法,而不是像这样单独增加它们
++$a; ++$b; ++$c; ++$d;
我可以做一些事情,比如将它们封装在括号中,然后对它们全局执行增量吗
++($a, $b, $c, $d);
我已经尝试过上述说法,但它不起作用。
有没有办法用一个增量运算符发布或每次增量多个变量。我有 4 个值,我需要增加一个值
$a = 1; $b = 3; $c = 45; $d = 10;
通常我们使用这种方法,而不是像这样单独增加它们
++$a; ++$b; ++$c; ++$d;
我可以做一些事情,比如将它们封装在括号中,然后对它们全局执行增量吗
++($a, $b, $c, $d);
我已经尝试过上述说法,但它不起作用。
您可以将array_map与引用变量数组一起使用
array_map(function(&$var){ $var++; }, array(&$a, &$b, &$c, &$d));
您可以编写一个通过引用获取参数的函数:
function inc_all(&$arg1, &$arg2 = 0, &$arg3 = 0, &$arg4 = 0) {
$arg1++;
$arg2++;
$arg3++;
$arg4++;
}
inc_all($a, $b, $c, $d);
您需要为函数编写一次需要增加的最大变量数,因为不可能通过引用传递给func_get_args
用于处理任意长度参数列表的函数。
不,那是不可能的。您只需要浪费额外的语句来逐一递增它们。
适用于其他情况的是您可以一次设置多个值。例如,
$a = $b = $c = 10;
将 $a、$b 和 $c 都设置为 10。
从 php 5.6 开始,可以在一个函数中使用可变参数并处理可变数量的参数:
function increment(&...$arguments)
{
foreach($arguments as &$arg){
++$arg;
}
}
increment($a);
increment($b, $c);
increment($x, $y, $z);
原答案:
另一个例子,没有参考:
extract(array_map(function($v){return ++$v;}, compact(array('a','b','c','d'))));
使用此代码的帮助,我设法制作了此答案的稍微动态的版本
这是一个相当麻烦的工作,但这个例子最多可以处理 9 个参数。
// Workaround from
// http://www.php.net/manual/en/function.func-get-args.php#110030
function func_get_args_byref() {
$trace = debug_backtrace();
return $trace[1]['args'];
}
// ``&x=0'', required to pass arg as reference
// You can increase the amount of maximum arguments by adding ``&$x=0''
function inc( &$x=0,&$x=0,&$x=0,&$x=0,&$x=0,&$x=0,&$x=0,&$x=0,&$x=0 ) {
$arguments = func_get_args_byref();
foreach ($arguments as &$arg) ++$arg;
}
$a = 0; $b = 3; $c = 45; $d = 10;
inc($a, $b, $c, $d); // a = 1, b = 4, c = 46, d = 11
inc($b, $d); // a = 1, b = 5, c = 46, d = 12
inc($c, $d); // a = 1, b = 5, c = 47, d = 13
inc($a, $a, $c); // a = 3, b = 5, c = 48, d = 13