php for 迴圈 如何可以判斷上一個值?
目前是用 php 去讀取 excel
然後資料透過 for 迴圈顯示
但是遇到一個問題~ 假如同一天有多筆資料的話 ~ 第二筆以後的資料我的日期需要變成自定義
那麼我該如何抓到上一個資料?
code 是這樣的
include_once("PHPExcel/IOFactory.php");
include_once("PHPExcel.php");
require_once 'PHPExcel/Reader/Excel5.php';
$objReader = PHPExcel_IOFactory::createReader('Excel5');//use excel2007 for 2007 format
$filename="Briefing.xls";
$objPHPExcel = $objReader->load($filename);
$sheet = $objPHPExcel->getSheet(0);
$highestRow = $sheet->getHighestRow();
$highestColumn = $sheet->getHighestColumn();
$ww = 0;
for ($j=2;$j<$highestRow;$j++) {
$a = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();
$b = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();
$c = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue();
$d = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue();
$e = $objPHPExcel->getActiveSheet()->getCell("E".$j)->getValue();
echo "INSERT INTO Tabel_A (SDate,EDate,info,type,mark) VALUES ('".$a."','".$b."','".$c."','".$d."','".$e."'); //一天只能一筆
echo "INSERT INTO Tabel_B (B_SDate,B_EDate,B_info,B_type,B_mark) VALUES ('".$a."','".$b."','".$c."','".$d."','".$e."'); // 多筆資料
}
Excel 資料是這樣
A B C D E
2021-10-10 2021-10-11 110年8月10日日報 Car new
2021-10-11 2021-10-20 110年8月11日日報 Bik new
2021-10-11 2021-10-20 110年8月11日日報 Car old
2021-10-11 2021-10-20 110年8月11日日報 Bik old
2021-10-11 2021-10-25 110年8月11日日報 Car old
2021-10-16 2021-10-25 110年8月16日日報 mot new
2021-10-17 2021-10-27 110年8月17日日報 Car new
2021-10-19 2021-10-27 110年8月19日日報 mot old
2021-10-20 2021-10-30 110年8月20日日報 Car new
2021-10-20 2021-10-30 110年8月20日日報 mot old
因為 Table_A 是主表 所以一天只會有一筆資料
然後 Table_B 是追蹤關聯表 所以當一天有多筆資料的話 會把資料也新增到這裡
主要是由 C 欄位判斷
假如 110年8月11日日報 有四筆資料 但是我在 INSERT INTO Tabel_A 的時候 只要新增一筆
那我要怎麼做?
直接判斷 Date c 是否存在就好了!
$__arr = array();
for ($j=2;$j<$highestRow;$j++) {
$a = ...(ry(ry
$c = $objPHPExcel->getAct...(ry
if(!$__arr[ $c ] ){
// if 'Date c' not exists, INSERT Table_A
}
INSERT Table_B // insert all data
$__arr[ $c ] = 1;
}
是我的話應該會用Session來判斷吧
將資料存到Session去跟下一筆比對
不相等代表是第一次出現,就新增Table_A;相等代表這天有2筆以上,就新增Table_B
$chk_c = $_SESSION['c']; //儲存C資料
for ($j=2;$j<$highestRow;$j++) {
$a = $objPHPExcel->getActiveSheet()->getCell("A".$j)->getValue();
$b = $objPHPExcel->getActiveSheet()->getCell("B".$j)->getValue();
$c = $objPHPExcel->getActiveSheet()->getCell("C".$j)->getValue();
$d = $objPHPExcel->getActiveSheet()->getCell("D".$j)->getValue();
$e = $objPHPExcel->getActiveSheet()->getCell("E".$j)->getValue();
if($c!=$chk_c){ //判斷目前資料是否和上一筆不同
insert into Table_A
$chk_c = $c; //若不同,則將資料存到Session,再與下一筆資料比對
} else {
insert into Table_B
//C資料相同的話就不需要更新Session資料
}
}