このコードは配列を作成し、false の場合でも属性「payment_sum」を追加します$value['CardCode'] != $prevCode
。テスト用に値を出力していることがわかります。最後の行では 509.85 が正しく合計されていますが、このif
ステートメントによると、その前の配列は省略されているはずです。
if (($handle = fopen('upload/BEN-new.csv', "r")) === FALSE) {
die('Error opening file');
}
$headers = fgetcsv($handle, 1024, ',');
$cardCodes = array();
$payments = array();
$details = array ();
while ($row = fgetcsv($handle, 1024, ",")) {
$cardCodes[] = array_combine($headers, $row);
}
$prevCode = '';
foreach ($cardCodes as $key => $value) {
if ($value['CardCode'] != $prevCode) {
$payments['payment_sum'] = $value['InvPayAmnt'];
}
else {
$payments['payment_sum'] += $value['InvPayAmnt'];
}
$prevCode = $value['CardCode'];
print_r ($payments);
}
fclose($handle);
印刷...
Array
(
[payment_sum] => 1055.40
)
Array
(
[payment_sum] => 550.00
)
Array
(
[payment_sum] => 100.00
)
Array
(
[payment_sum] => 287.33
)
Array
(
[payment_sum] => 509.85
)
優先出力
Array
(
[payment_sum] => 1055.40
)
Array
(
[payment_sum] => 550.00
)
Array
(
[payment_sum] => 100.00
)
Array
(
[payment_sum] => 509.85
Array (
[currTotal] => 287.33
[currTotal] => 222.52
)
)
CSV
BENV1072 1055.4
BENV1073 550
BENV5271 100
BENV5635 287.33
BENV5635 222.52