私はphpが初めてで、調査した後、理解できる答えが見つかりませんでした。私はhtmlでphpを使用しています。テキスト ファイル (file_get_contents) から読み込んでいます。最初の項目が「ハンバーガー」(burgers.txt) であるレストラン メニューを作成しています。2番目は「チキン」などです。これらのテキストファイルを分解機能を使用して分離しています。これが私のコードです
<?php
$dir = 'C:\xampp\htdocs\posplus\txtfiles';
$dh = opendir($dir);
while (false !== ($filename = readdir($dh))) {
$files[] = $filename;//array of files
}
$dot = array_shift($files);
$dotdot = array_shift($files);
$numfiles = count($files);//counts number of text files
for($f=0;$f<$numfiles;$f++)
{
$filearray = array();
$filearray[$f] = file("txtfiles/".$files[$f]); //txtfile."burgers.txt"
$linessarray = array();
$linesarray[$f] = count($filearray[$f]); //number of lines in each file (to be displayed on different lines)
$namesarray = array();
$namesarray[$f] = pathinfo($files[$f]); //get name of file without extension(.txt)
${'array'.$f} = explode("\n", file_get_contents("txtfiles/".$files[$f]));
?>
</head>
<body>
<?php
echo'<table align="center">
<tr>
<th colspan = "3">'.$namesarray[$f]['filename'].'</th>
</tr>';
//filename without ".txt"
for ($i=0; $i<$linesarray[$f]; $i++) { //loop through each text file
$part = explode(',', ${'array'.$f}[$i]);//split each line in text file by comma example (cheeseburger, large, €3.00, made from finest beef)
echo'<tr>
<td id="name">'.$part[0].'</td>
<td id="size">'.$part[1].'</td>
<td id="price">'.$part[2].'</td>
</tr>
<tr>
<td id="desc" colspan="3">'.$part[3].'</td>
</tr>';
}}
?>
上記のコードは、テーブルを次々とうまく印刷しています。私の問題は、動的にする必要があることです。このジョブは、表示メニューであるため、1 画面分しか使用する必要がありません。フォントが特定のサイズの場合、たとえばページに10個のアイテムしか必要ないという方法で動的にする必要があります。最初のページの項目 1 ~ 10、2 番目のページの 11 ~ 20 など。サイズ計算は問題ありませんが、私のコードからわかるように、テキスト ファイルをループしています。特定の数のアイテムの後に改ページなどを行う必要があります。たとえば、最初のtxtファイルに6つのアイテムがあり、2番目のファイルに8つのアイテムがある場合、2番目のファイルに4つのアイテムを改ページする必要があります。
私が考えることができる唯一の方法は、このような foreach merge_recursive ループです
$newArray = array_merge_recursive($array0, $array1, $array2); //merge burgers.txt with chicken.txt, etc
foreach ($newArray as $key => $value) {
echo "$key - $value <br />";
}
これにより、配列がマージされ、それらすべてにキーが割り当てられ、$newArray 内の 10 個の項目の後で改ページできるようになります。問題は、読み取るテキスト ファイルの数がわからないため、上記のようにハード コードできないことです。ある配列が前の配列に追加されるある種のループを介して、すべての配列をマージする方法はありますか?
私が言ったように、私は初心者であり、助けがほとんどないので、助けていただければ幸いです。上記のコードも非常に貧弱であることを認識しているため、より良い方法の提案も役立つ場合があります。長々とした質問で申し訳ありません。私に気楽に行ってください。