在以下两个代码片段之间哪一个被认为更好?这个循环本身会运行几十次,每次循环20次,顶部,通常只需2-3次。
foreach (glob("$directory/*.yml") as $filename) {
$files[$filename] = $provider;
}
或
$filenames = glob("$directory/*.yml");
$files = array_combine($filenames, array_fill(0, count($filenames), $provider));
答案 0 :(得分:1)
第一个更清晰,不生成,然后立即丢弃额外的阵列。但关键是它更简单易懂 - 当以后再次访问此代码时,读者会立即知道它的作用。
答案 1 :(得分:1)
为了更好地深入了解php,我建议您坚持使用array_combine
或array_fill
函数。
但是,在我看来,你的第一种方法比第二种方法简单易读。
此外,在现实生活中,你可能会遇到一些问题,如果你使用第二种方法,如php版本不支持该功能。
请注意,如果$filenames
为空或甚至为空数组,则array_combine
将会发出警告。从PHP 5.3.2开始,array_combine(array(), array())
抛出警告并返回FALSE,而不是返回array()
。
https://bugs.php.net/bug.php?id=34857
至于array_fill
,它最适合您的场景。如果您碰巧更改为在类对象上使用array_fill
的任何情况,那么它会搞砸所有内容。