【问题标题】:PHP; Manipulation of Multiple Variables on Single Line?PHP;在单行上操作多个变量?
【发布时间】:2014-07-10 13:12:22
【问题描述】:

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

所以我有以下内容。

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

我希望能够将其浓缩为以下内容:

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

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

【问题讨论】:

  • 不,它没有。您可以级联普通赋值,但不能使用运算符进行赋值。
  • 您可以编写一个小的sn-p代码代码,减少代码行数,但代价是复杂性(以及可能的可维护性)

标签: php arrays variables


【解决方案1】:

没有语法可以让您在单个语句中完全做到这一点。

可以想出办法(通过将所有内容推入一个数组),但结果会比一组作业更不清晰和高效。

想到这样的事情,但如果他们发现你这样做,不要说你是从我这里听到的:

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 是的,我害怕那个。如果那是唯一的其他选择,我想我会坚持使用代码块来设置这么小的集合。
    【解决方案3】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-12
      • 2012-06-12
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-19
      相关资源
      最近更新 更多