相当于PHP中的dict理解

时间:2016-02-04 21:20:38

标签: php arrays

我正在寻找以下Python代码的PHP等价物:

d = {a*2:a*3 for a in range(5)}

这是一个丑陋的单行解决方案:

$d = array_combine(array_map(function ($x) {return $x*2;}, range(0,4)), array_map(function ($x) {return $x*3;}, range(0,4)));

这是一个使用循环的更具可读性的解决方案:(

$d = [];
foreach(range(0,4) as $x) {
    $d[$x*2]  = $x*3;
}

在PHP中有更简单,更好的方法吗?

1 个答案:

答案 0 :(得分:2)

PHP中没有字典理解语法。当寻找最短和/或最有效的代码来产生相同的输出时,我会建议:

1。范围(从,到,步骤)

您可以使用范围功能的第三个参数:

   select s.company-name
   from company s
   where not exists
   ((select city from company where company-name = 'Small Bank
   Corporation')
   except
  (select city from company t where s.company-name = t.company-name))

$d = array_combine (range(0,8,2), range(0,12,3)); 的输出:

var_export($d)

当然,这仅适用于表达式是线性的。

2。 array ( 0 => 0, 2 => 3, 4 => 6, 6 => 9, 8 => 12, )

foreach循环确实是最干净,最易读的方法。请注意,您的版本中有一点错误: range 函数至少需要2个参数。

此外,PHP不要求您初始化 $ d ,因为它将在循环中的第一个赋值时执行此操作。最后,您不需要括号,尽管您首选的编码样式可能需要使用它们:

foreach

在这些行数中,这一行甚至比第一个解决方案更短。