【发布时间】:2011-07-09 18:28:53
【问题描述】:
我被困在我无法理解的事情上。基本上我有提交时需要读取的 XML 文件。我正在寻找包含以下内容的行:
bytes="345354" 我想从 bytes 标签中提取 int 并将它们全部加起来。
我正在使用的当前代码可以解决问题,但存在问题。我目前使用的代码是:
preg_match_all('|bytes="(.+?)"|', $filecontent, $array);
function arraySumRecursive($array)
{
$total = 0;
foreach(new recursiveIteratorIterator( new recursiveArrayIterator($array)) as $num)
{
$total += $num;
}
return $total;
}
$size = arraySumRecursive($array);
现在这段代码运行良好,但是一旦读取一个字节加起来超过 2537792398 的 XML 文件就会出现问题,它不会显示正确的字节总和,但总是停在 2537792398 字节。当然 XML 文件更大,但我用 2 行的 XML 文件进行了测试,每行的字节值大于 2537792398,但总和仍然只显示 2537792398 字节。
谁能告诉我我做错了什么?我个人感觉它与多维数组有关,但此代码是唯一有效并设法获取 bytes="" 数据的代码。我无法使用任何其他方法来提取值并将它们全部加起来以得出一个长字节数。
感谢任何帮助或正确方向的指示!
问候,
汤姆
【问题讨论】:
-
您能每次都打印出
$num吗? PHP 的整数包含非常大的数字,没有任何问题:php.net/language.types.integer
标签: php arrays recursion preg-match