2014-05-21 41 views
1

基本的問題真的,我知道我可以在其他一些語言中做到這一點,但我不知道PHP是很好,希望有人可以提供幫助。PHP;在單行上操作多個變量?

所以我有以下。

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

而且我希望能夠給剛剛凝結下來的東西,如:

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

確實PHP有做類似的內部呢?

+1

不,不。您可以級聯正常分配,但不能與操作員分配。 – Barmar

+0

你可以寫一個小片斷代碼的代碼,減少代碼的行數,但在複雜性(以及可能的可維護性)的成本 –

回答

2

我同意其他人,但如果你真的有它在一行中,你可以做這樣的事情:

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

是的,我很害怕這一點。如果那是在只有其他的選擇,我想我會堅持這個小塊的代碼塊。 –

2

沒有語法,允許你做的正是這樣一條語句。

可能醞釀這樣做的方式(通過推動數組內的所有內容),但結果會比一組賦值更不清晰和高效。

像這樣的東西出現在腦海,但是,如果他們抓住你這樣做不說你從我這裏聽到它:

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

太糟糕了:( (...) –

1

有ni建立的功能。根據PHP版本,您可以將數組和lambda函數傳遞給自定義函數。

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

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

這就是它(基本上沒有語法檢查)。