计算foreach循环外的所有结果值

时间:2018-03-31 17:23:31

标签: php

我想在某个路径中计算文本文件中的所有字符,所以我写了以下代码

<?PHP

$files = glob('my/files/path/*.txt', GLOB_BRACE); 

foreach($files as $file) { 

$str = file_get_contents($file) or dir("can not read file");

$numCharSpace = strlen($str);

echo "Counted " .$numCharSpace. " character(s).<br>";

} 

?>

假设我们在此路径中有4个文件,因此它将打印出以下内容

Counted 201 character(s).
Counted 99 character(s).
Counted 88 character(s).
Counted 112 character(s).

如何获得500 character(s)所有内容的总和,以便打印出foreach();循环内所有结果的计数。

4 个答案:

答案 0 :(得分:2)

您可以使用变量求和。然后你可以使用filesize()来获取文件的总字节数而不是加载它:

$files = glob('my/files/path/*.txt', GLOB_BRACE);
$total = 0;
foreach($files as $file) {
  $numCharSpace = filesize($file);
  $total += $numCharSpace ;
}
echo "Counted " .$total. " character(s).<br>";

答案 1 :(得分:2)

使用strlen,您可以获得文件的字节数。因此,您也可以直接获取它,而无需读取文件内容。

$numberOfChars = array_sum(
    array_map('filesize', glob('my/files/path/*.txt', GLOB_BRACE))
);

这样做是为了获取glob返回的每个文件的文件大小,并使用array_sum对它们求和。

答案 2 :(得分:1)

<?PHP

$files = glob('my/files/path/*.txt', GLOB_BRACE); 
$Total = 0;
foreach($files as $file) { 

$str = file_get_contents($file) or dir("can not read file");

$numCharSpace = strlen($str);

echo "Counted " .$numCharSpace. " character(s).<br>";
$Total += $numCharSpace;

} 
echo "Total " .$Total. " characters.<br>";
?>

答案 3 :(得分:0)

以下代码应该有效:

$ files = glob('my / files / path / * .txt',GLOB_BRACE);

$ numCharSpace = 0;

foreach($ files as $ file){

$ str = file_get_contents($ file)或dir(“无法读取文件”);

$ numCharSpace = $ numCharSpace + strlen($ str);

}

echo“计算”。$ numCharSpace。 “character(s)。”“;