Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:what';使用数组函数是foreach还是hustle更好?_Php_Arrays - Fatal编程技术网

PHP:what';使用数组函数是foreach还是hustle更好?

PHP:what';使用数组函数是foreach还是hustle更好?,php,arrays,Php,Arrays,在以下两个代码段之间,哪一个被认为更好?这个循环本身会运行几十次,每次循环20次,最多,通常只有2-3次 foreach (glob("$directory/*.yml") as $filename) { $files[$filename] = $provider; } 或 第一个更清晰,不会生成然后立即丢弃额外的数组。但关键是它更简单,也更容易理解——当稍后再次访问此代码时,读者将立即知道它的功能 为了更好地深入了解php,我建议您坚持使用array\u combine或您的arra

在以下两个代码段之间,哪一个被认为更好?这个循环本身会运行几十次,每次循环20次,最多,通常只有2-3次

foreach (glob("$directory/*.yml") as $filename) {
    $files[$filename] = $provider;
}


第一个更清晰,不会生成然后立即丢弃额外的数组。但关键是它更简单,也更容易理解——当稍后再次访问此代码时,读者将立即知道它的功能

为了更好地深入了解php,我建议您坚持使用
array\u combine
或您的
array\u fill
函数。 然而,在我看来,您的第一种方法比第二种方法简单得多,可读性强得多

此外,在实际应用程序中,如果您使用第二种方法,例如php版本不支持该函数,您可能会遇到一些问题

请注意,如果
$filenames
是空数组,您的
array\u combine
将发出警告。从PHP5.3.2开始,
array\u combine(array(),array())
抛出警告并返回FALSE,而不是返回
array()


至于
数组填充
,它最适合您的场景。如果您碰巧更改到在类对象上使用
array\u fill
的任何场景,它会把一切搞糟。

如果您使用
foreach
大量(即大约150000个)数组,那么它总是比所有那些
数组函数
好,否则只需使用数组函数空
array\u combine()
问题修复是在PHP 5.4.0中发布的,请参阅。PHP5.4本身现在已经过时,不再受支持。这在您应该运行的任何PHP版本上都不是问题。
$filenames = glob("$directory/*.yml");
$files = array_combine($filenames, array_fill(0, count($filenames), $provider));