我想知道PHP如何处理匿名数组,如果我做这样使用它foreach循环:匿名数组与PHP
foreach(array('a', 'b') as $foo) {
// ...
}
如果数组被每一步重建这是行不通的 - 但它有效,所以看起来PHP为该数组创建了一个变量(或者类似的东西,其实并不重要) - 这意味着这实际上不会有糟糕的性能。但是,有没有为什么不使用匿名数组与foreach循环? (它有点“看起来错/糟糕”给我)
我想知道PHP如何处理匿名数组,如果我做这样使用它foreach循环:匿名数组与PHP
foreach(array('a', 'b') as $foo) {
// ...
}
如果数组被每一步重建这是行不通的 - 但它有效,所以看起来PHP为该数组创建了一个变量(或者类似的东西,其实并不重要) - 这意味着这实际上不会有糟糕的性能。但是,有没有为什么不使用匿名数组与foreach循环? (它有点“看起来错/糟糕”给我)
这是一个非常正常的数组,而且应该工作。
你的术语很怪异,匿名对函数有意义,因为通常有名称,但对于数组?如果您不直接将其分配给变量,是整数匿名吗? :) Nah ..
我没有看到一个不使用它的理由。
无论您是使用直接初始化的数组还是使用数组变量作为参数为foreach
。它们都是有效的参数,没有理由认为匿名数组的处理方式不同。
从代码维护的角度来看,它也完全清楚这里正在做什么,所以也没有可读性问题。
通过避免使用临时数组变量,您还可以减少变量范围的污染。这是一个小问题,但也是一个很好的副作用。 –
不是你的问题的一个问题,但是这个代码也让我感到困惑:P。我会使用array-map(http://php.net/manual/en/function.array-map.php)来避免这种情况:P – Nanne
我认为'foreach'中匿名数组的最佳示例是:'foreach(range('a','z')as $ char){}' – ComFreek
“PHP为该数组创建了一个变量(或类似的东西,其实并不重要)” - 它的确如此,无所谓 - 如果您将其存储在命名数组中,您将创建一个。 – Eric