我正在寻找以下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中有更简单,更好的方法吗?
答案 0 :(得分:2)
PHP中没有字典理解语法。当寻找最短和/或最有效的代码来产生相同的输出时,我会建议:
您可以使用范围功能的第三个参数:
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)
当然,这仅适用于表达式是线性的。
array (
0 => 0,
2 => 3,
4 => 6,
6 => 9,
8 => 12,
)
foreach
循环确实是最干净,最易读的方法。请注意,您的版本中有一点错误: range 函数至少需要2个参数。
此外,PHP不要求您初始化 $ d ,因为它将在循环中的第一个赋值时执行此操作。最后,您不需要括号,尽管您首选的编码样式可能需要使用它们:
foreach
在这些行数中,这一行甚至比第一个解决方案更短。