テキストファイルにあるシリアライズされた複数の多次元配列データを日付順にソートした後に10レコードずつ表示する方法について
PHPプログラミング初心者のAJYAMAと申します。
表題にあるようなことが、したいのですが、以下のコードでできなくて困っています。どなたか、良きアドバイスをいただけないでしょうか?
<POSTされた値のテキストファイルへの書き込み>
$lines=array($recordID,$nickname,$date,$area,$num,$item,$size);
//データをシリアル化
$serializedLines=serialize($lines);
//テキストファイルに改行を入れ、一行にデータを収納する
$serializedLines=$serializedLines."\n";
//txtファイルに書き込み
$fp=fopen("report.txt","a");
flock($fp, LOCK_EX);
fputs($fp,$serializedLines);
fclose($fp);
/*
<データ(変数)の値>
テキストファイルにシリアル化して格納されたデータの状態
array(0 =>
$recordID 例)array(1)
$nickname 例)array(Ajyama)
$date 例)array(2008/8/30,2008/9/3,2008/9/4)
$area 例)array(東京,大阪,名古屋)
$num 例)array(01,02,03)
$item 例)array(りんご,バナナ,メロン)
$size 例)array(大,中,小)
)
*/
<テキストファイルからデータを読み込み、HTMLへの展開>
<?php
//ファイルを開く
$handle=fopen(dirname(__FILE__)."/../mod/report.txt","r");
//データを呼び出す
while(($serialrow=fgets($handle,1024))!==FALSE){
//シリアライズを解除して変数に格納
$row=unserialize($serialrow);
//展開したデータを配列に格納(ソートするため)
$data[]=array($recordID,$nickname,$date,$area,$num,$item,$size)
}
fclose($handle);
//変数の展開
foreach($data as $key=>$row){
//ソート
array_multisort($d,SORT_DESC,SORT_NUMERIC,$num,SORT_DESC,SORT_NUMERIC,$data);
//レコード数毎にページを制御
$Cid=$_GET['cid'];
$Size=sizeof($data);
$P=$_GET["p"];
if($P>0){
$Prev=$P-1;
$PrevPage="<a href=".$_SERVER['PHP_SELF']."?p={$Prev}&&cid={$Cid}>前の10件</a>";
}
if($Size/10-1>$P){
$Next=$P+1;
$NextPage="<a href=".$_SERVER['PHP_SELF']."?p={$Next}&&cid={$Cid}>次の10件</a>";
}
if($P==0&&$Size/10<=1){
$NextPage="";
}
?>
<h2><?php echo $CatTitle?></h2><BR>
全 <?=$Size?>件 | <?=$PrevPage?> <?=$NextPage?> <?=$NumP?>
//配列変数の展開
<?php
for($i=$P*10;$i<$P*10+10;$i++){
for($j=0;$j<$no;$j++){
echo <<<EOF
<table >
<tr>
<td>{$recordID[$i]}</td>
<td>{$nickname[$i]}</td>
<td>{$date[$i][$j]} {$area[$i][$j]} {$num[$i][$j] {$item[$i][$j]} {size[$i][$j]}</td>
</tr>
</table>
EOF;
}
}
?>
お礼
すいません。焦っていて思わず理解を先送りにして質問してしまいました。 『配列$blanklineに空行の要素が幾つあるかを$lastline要素返すようにし、 1であれば0、1でなければ1を返すようにする』という流れで把握いたしました。 どうもありがとうございます。