前提
以下の回答2を参考に、重複するセルを結合する事は再現できました。
https://teratail.com/questions/99718
PHP
1$data=[ 2 ["年月","月","火","水"], 3 ["H23/1〜H28/3","フットサル","","バスケット"], 4 ["H23/1〜H28/3","フットサル","バトミントン","バスケット"], 5 ["H18/1〜H23/1","フットサル","バトミントン","バレーボール"], 6 ["H18/1〜H23/1","ハンドボール","","バレーボール"], 7]; 8 9/*全てのセルにrowspan=1を設定*/ 10$a=[]; 11foreach($data as $key=>$vals){ 12 $a[$key]=[]; 13 foreach($vals as $val){ 14 $a[$key][]=["value"=>$val,"rowspan"=>1]; 15 } 16} 17// print_r($a); 18 19for($i=count($a)-1;$i>0;$i--){ 20 foreach($a[$i] as $key=>$val){ 21 if($a[$i-1][$key]["value"]==$val["value"]){ 22 $a[$i-1][$key]["rowspan"]=$val["rowspan"]+1; 23 unset($a[$i][$key]); 24 } 25 } 26} 27// print_r($a); 28 29/*上の行のセルのvalueと比較して、同じなら上の業のrowspanを増やし、自分は消す */ 30print "<table border>"; 31foreach($a as $vals){ 32 print "<tr>"; 33 foreach($vals as $val){ 34 $rowspan=$val["rowspan"]>1?" rowspan=".$val["rowspan"]:""; 35 print "<td{$rowspan}>{$val["value"]}</td>"; 36 } 37 print "</tr>"; 38} 39print "</table>";
実現したいこと
この上で、
$key[0]の年月の結合数以上に、$key[1]~[3]を結合しない、とすることは可能でしょうか。
※年月で必ず区切りたいです。
現状だと、
「H23/1〜H28/3」のセルはrowspan=2、
ひとつめの「フットサル」のセルがrowspan=3となり、年月をまたいでしまいます。
ひとつめの「フットサル」のセルをrowspan=2にしたいです。
どうぞよろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2023/01/25 01:36