PHP:使用数组函数更好地练习,预习或喧嚣?

时间:2015-11-30 04:51:32

标签: php arrays

在以下两个代码片段之间哪一个被认为更好?这个循环本身会运行几十次,每次循环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));

2 个答案:

答案 0 :(得分:1)

第一个更清晰,不生成,然后立即丢弃额外的阵列。但关键是它更简单易懂 - 当以后再次访问此代码时,读者会立即知道它的作用。

答案 1 :(得分:1)

为了更好地深入了解php,我建议您坚持使用array_combinearray_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的任何情况,那么它会搞砸所有内容。