PHP;单线操作多个变量?

时间:2014-05-21 18:17:06

标签: php arrays variables

基本问题,我知道我可以用其他语言做到这一点,但我不太了解PHP,希望有人可以提供帮助。

所以我有以下内容。

$holyToT *=100;
$coldToT *=100;
$fireToT *=100;
$poisonToT *=100;
$lightningToT *=100;

我希望能够将其简化为:

$holyToT, $coldToT, $fireToT, $poisonToT, $lightningToT *= 100;

PHP是否有内部方法来做类似的事情?

3 个答案:

答案 0 :(得分:2)

没有语法允许您在单个语句中完成此操作。

可以做出这样做的方法(通过推送数组中的所有内容),但结果将比一组分配更不清晰和高效。

这样的事情浮现在脑海中,但是如果他们抓住你这样做,就不要说你是从我这里听到的:

extract(array_map(
    function($i) { return $i * 100; },
    compact('holyToT', 'coldToT', 'fireToT' /*, ... */ )
));

答案 1 :(得分:2)

我同意其他人的观点,但是如果你真的希望将它放在一行中,你可以这样做:

list($holyToT, $coldToT, $fireToT, $poisonToT, $lightningToT) = array_map(function($x) { return $x*100;}, array($holyToT, $coldToT, $fireToT, $poisonToT, $lightningToT));

答案 2 :(得分:1)

ni内置功能。根据PHP版本,您可以将数组和lambda函数传递给自定义函数。

function performOnAll(array $a, $fct) { 
    foreach($a as $v) $fct(&$a); 
} 

performOnAll(array($a, $b, ...), function(&$a) { $a *= 100; });

基本上就是这样(没有语法检查)。