php中的数组总和,从excel文件生成的数组

时间:2017-11-11 11:29:29

标签: php arrays

我在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;
}

1 个答案:

答案 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++;
}