我在php中读取excel文件。我想在最后一行显示一列的总和。要做到这一点,我需要得到以下数组的总和。
获取以下数组的部分代码是
数组([0] => 1)数组([0] => 2)
$file = "$filename";
$sheet = (isset($_POST['sheet'])) ? $_POST['sheet'] : '';
$connection = new Spreadsheet_Excel_Reader();
$connection->read($file);
echo"<table>";
$x = 1;
while ($x <= $connection->sheets[$sheet]['numRows']) {
echo "\t<tr>\n";
$y=1;
while ($y <= $connection->sheets[$sheet]['numCols']) {
$cell = isset($connection->sheets[$sheet]['cells'][$x][$y]) ? $connection->sheets[$sheet]['cells'][$x][$y] : '';
echo "\t\t<td>$cell</td>\n";
$y++;
}
echo "\t</tr>\n";
$x++;
}
$x = 2;
while ($x <= $connection->sheets[$sheet]['numRows']) {
$ctnqty = isset($connection->sheets[$sheet]['cells'][$x][16]) ?
$connection->sheets[$sheet]['cells'][$x][16] : '';
$ctnqtyttl = explode(",",$ctnqty);
print_r ($ctnqtyttl);
$x++;
}
我在下面的代码中起诉得到上面数组的总和,但是它只给出了2的结果。请帮我在这里得到总和3.
$sum = 0;
foreach ($ctnqtyttl as $value) {
echo $sum = $sum + $value;
}
答案 0 :(得分:0)
$ctnqtyttl
循环中的新值时, while
都会被覆盖,因此它会忘记以前的任何值。您计算的总和将仅基于它的最后一个值。
跳过最后的foreach
循环,并在第二个while
循环中计算总和,如下所示:
$sum = 0; // <-------
$x = 2;
while ($x <= $connection->sheets[$sheet]['numRows']) {
$ctnqty = isset($connection->sheets[$sheet]['cells'][$x][16]) ?
$connection->sheets[$sheet]['cells'][$x][16] : '';
$ctnqtyttl = explode(",", $ctnqty);
print_r ($ctnqtyttl);
$sum += array_sum($ctnqtyttl); // <-------
$x++;
}