PHP中dict理解的等价物

PHP中dict理解的等价物,php,arrays,Php,Arrays,我正在寻找PHP中与以下Python代码等效的代码: 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))); 下面是一个使用循环的更具可读性的解决方案:( 在PHP中有更简单更好的方法吗?在PHP中没有字

我正在寻找PHP中与以下Python代码等效的代码:

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)));
下面是一个使用循环的更具可读性的解决方案:(


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

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

1.范围(从,到,步长) 您可以使用范围函数的第三个参数:

$d = array_combine (range(0,8,2), range(0,12,3));
var\u导出的输出($d)

当然,这只有在表达式是线性的情况下才有效

2.
foreach
foreach
循环确实是处理此问题的最干净、最可读的方法。请注意,您的版本中有一个小错误:range函数至少需要2个参数

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

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

在字符数方面,这一行甚至比第一个解决方案还要短。

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

1.范围(从,到,步长) 您可以使用范围函数的第三个参数:

$d = array_combine (range(0,8,2), range(0,12,3));
var\u导出的输出($d)

当然,这只有在表达式是线性的情况下才有效

2.
foreach
foreach
循环确实是处理此问题的最干净、最可读的方法。请注意,您的版本中有一个小错误:range函数至少需要2个参数

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

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

在字符数方面,这一行甚至比第一个解决方案还要短。

这可能会有所帮助:
foreach
是您案例中最简单的解决方案Python代码也使用循环:“(”。
对于范围内的(5)
这是一个循环。@ern您是对的,我想的是其他东西——例如,更好的方式(即占用更少的资源)在python中使用join而不是在for循环中连接字符串。我也有这样的印象,即列表/dict理解在计算上更可取。但我不知道它在php中如何与数组一起工作,因此,使用循环而不是数组映射可能同样有效。这可能会有所帮助:
foreach
是最简单的在你的例子中,Python代码也使用循环:(“.
对于范围内的(5)
它是一个循环.@ern你是对的--我想我在想其他的东西--例如,它更好的方式(即占用更少的资源)在python中使用join而不是在for循环中连接字符串。我还觉得列表/dict理解在计算上更可取。但我不知道它在php中如何与数组一起工作,所以可能它与循环而不是数组映射一样有效。这很好。实际上没有与dict等价的东西在php中的理解或列表理解…这仍然是他能做的最好的事情之一…谢谢,@ern,你当然是对的:php没有等价物。我在答案的顶部添加了这个事实,并添加了两个选项。谢谢!第一个解决方案很聪明,但没有帮助,因为我更改了函数等,使问题变得简单呃,在我的应用程序的上下文之外进行陈述。第二个看起来很好——我想要一个可读的一行。@ern谢谢你的链接,它很有用。那很好。。实际上php中没有字典理解或列表理解的等价物。。不过这是他能做的最好的事情之一。。谢谢,@ern,你当然是对的:PHP没有等价物。我在答案的顶部添加了这一事实,并添加了两个备选方案。谢谢!第一个解决方案很聪明,但没有帮助,因为我更改了函数等,以使问题在我的应用程序上下文之外更容易陈述。第二个看起来很好——我想要一个可读的一行程序。@ern感谢这个链接,它是h埃尔普富尔。