基本问题,我知道我可以用其他语言做到这一点,但我不太了解PHP,希望有人可以提供帮助。
所以我有以下内容。
$holyToT *=100;
$coldToT *=100;
$fireToT *=100;
$poisonToT *=100;
$lightningToT *=100;
我希望能够将其简化为:
$holyToT, $coldToT, $fireToT, $poisonToT, $lightningToT *= 100;
PHP是否有内部方法来做类似的事情?
答案 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; });
基本上就是这样(没有语法检查)。