初級・中級者向け~ウェブ制作備忘録

PHPでCSVを読み込み表示させる場面が多々ありますが、指定列のデータでソート(並べ替え)しながら、さらに1ページの表示数を指定するコード。
【CSV】
11<>12<>13<>14<>15<> 21<>22<>23<>24<>25<> 31<>32<>33<>34<>35<> 41<>42<>43<>44<>45<> 51<>52<>53<>54<>55<>
【PHP】
<?php
/////////////
// 1ページ表示数
/////////////
$DISPALY = 5;
/////////////
// データファイル
/////////////
$datafile = file("data.csv");
/////////////
// データ読み込み
/////////////
foreach($datafile as $value){
$column = explode('<>', $value);
$data[] = array(
'name0' => $column[0],
'name1' => $column[1],
'name2' => $column[2],
'name3' => $column[3]
);
}
/////////////
// 列の配列
/////////////
foreach($data as $key => $value){
$name0[$key] = $value['name0'];
$name1[$key] = $value['name1'];
$name2[$key] = $value['name2'];
$name3[$key] = $value['name3'];
}
/////////////
// データソート
/////////////
//SORT_ASC,//小さい順
//SORT_DESC,//大きい順
array_multisort(
$name0,SORT_ASC,
$name1,SORT_ASC,
$name2,SORT_ASC,
$name3,SORT_ASC,
$data
);
/////////////
// 結果の常時
/////////////
$page = $_GET['page'];
if($page < 1){
$page = 1;
}
$start = $DISPALY * ($page-1);
$end = $DISPALY + $start;
if($end > count($data)){
$end = count($data);
}
for($i=$start; $i<$end; $i++){
echo '<li>' .$name0[$i]. '|' .$name1[$i]. '|' .$name2[$i]. '|' .$name3[$i]. '</li>'."\n";
}
/////////////
// ページリンク
/////////////
if($start > 0){
echo '<a href="./?page=' .($page-1). '">前のページ</a>'."\n";
}
if($end < count($data)-1){
echo '<a href="./?page=' .($page+1). '">次のページ</a>'."\n";
}
?>
ページ遷移は、前ページ・次ページの簡易リンクとなります。
| PHP | |
| 2021.05.13 19:25 | |
| 2021.05.13 22:04 |