環境:Windows10,XAMPP,HeidiSQL
laravelでapp>Console>Commandsに
CSV読込計算のファイルを作っております。
コマンドプロンプトでphp artisan command:output5
を行うと下記のように出力されます。
【結果】
2021年の合計が上手くいきません。
いかがすればよいかご教授頂けないでしょうか?
【現状コード】
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use Illuminate\Support\Facades\Storage; use File; class Output5 extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'command:output5'; /** * The console command description. * * @var string */ protected $description = '課題05'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle() { $filename = storage_path('app/public/study05.csv'); $fp = fopen($filename, 'r'); if ($fp === false) { echo "ファイルオープン時に失敗したので処理終了します。".PHP_EOL; exit; } $is_error = false; $break_key_year = ''; $break_key_month = ''; $i=0; $nyukin = 0; // 入金 $syukin = 0; // 出金 while ($line = fgets($fp)) { $i++; // ファイル読込終了判定 if (feof($fp)) { break; } // ファイル読込エラー判定 if ($line === false) { echo "ファイル読込時に失敗したので処理終了します。".PHP_EOL; $is_error = true; break; } // カンマ分割 $work_field = explode(',', $line); // 日付分割 $work_date = explode('/', $work_field[0]); $stock_nyukin[] = $work_field[1]; $total_nyukin = array_sum($stock_nyukin); $stock_syukin[] = $work_field[2]; $total_syukin = array_sum($stock_syukin); if (($break_key_year != $work_date[0]) || ($break_key_month != $work_date[1])) { if ($i != 1) { echo $break_key_year.'年'.$break_key_month.'月'.'入金集計:'.$nyukin.'、出金合計:'.$syukin.PHP_EOL; $stock_year_nyukin[] = $nyukin; $year_nyukin = array_sum($stock_year_nyukin); $stock_year_syukin[] = $syukin; $year_syukin = array_sum($stock_year_syukin); $nyukin = 0; $syukin = 0; if(($break_key_year != $work_date[0])){ echo '---------------------------------------------------'.PHP_EOL; echo $break_key_year.'年:'.'入金合計:'.$year_nyukin.'出金合計:'.$year_syukin.PHP_EOL; echo PHP_EOL; } // $year_nyukin =0; // $year_syukin =0; } $break_key_year = $work_date[0]; $break_key_month = $work_date[1]; } $w_nyukin = trim($work_field[1]); $w_syukin = trim($work_field[2]); if(empty($w_nyukin) && empty($w_syukin)){ echo $i.'行目のデータがありませんのでデータをスキップします。'.PHP_EOL; continue; } //通常処理 if (empty($w_nyukin)) { $syukin += $w_syukin; } else { $nyukin += $w_nyukin; } } echo $break_key_year.'年'.$break_key_month.'月'.'入金集計:'.$nyukin.'、出金合計:'.$syukin.PHP_EOL; echo '---------------------------------------------------'.PHP_EOL; echo $break_key_year.'年:'.'入金合計:'.$year_nyukin.'出金合計:'.$year_syukin.PHP_EOL; echo PHP_EOL; echo '========================================='.PHP_EOL; echo 'トータル:'.'入金合計:'.$total_nyukin.'、出金合計:'.$total_syukin.PHP_EOL; fclose($fp); if ($i == 0) { echo "指定されたファイルは空ファイルでした。".PHP_EOL; } return 0; } }
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/28 07:38
2021/01/28 08:10
2021/01/28 09:24
退会済みユーザー
2021/01/28 09:33
2021/01/28 09:34
退会済みユーザー
2021/01/28 09:40
2021/01/28 10:30
退会済みユーザー
2021/01/28 12:32 編集
2021/01/29 06:37
2021/01/31 04:25