【发布时间】:2013-10-22 15:43:03
【问题描述】:
我是 php 新手,经过研究,我没有找到我理解的答案。我正在使用带有 html 的 php。我正在从文本文件(file_get_contents)中读取。我正在做一个餐厅菜单,其中第一项是“汉堡”(burgers.txt)。其次是“鸡”等。我使用爆炸功能分离这些文本文件。这是我的代码
<?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>';
}}
?>
上面的代码一个接一个地打印表格。我的问题是我需要让它动态化。这项工作只需要使用一屏,因为它是一个显示菜单。它需要是动态的,如果字体是特定大小,我只希望页面上有 10 个项目。第一页第 1-10 项,第二页第 11-20 项,依此类推。 尺寸计算没有问题,但从我的代码中可以看出,我正在遍历文本文件。在一定数量的项目之后,我需要进行分页或类似操作。例如,如果我在第一个 txt 文件中有 6 个项目,在第二个文件中有 8 个项目,我需要在我的第二个文件中分页 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 个项目之后进行分页。问题是我不知道要读取多少文本文件,所以我不能像上面那样对其进行硬编码。有没有一种方法可以通过某种循环合并我的所有数组,其中一个数组被添加到之前的数组中?
正如我所说,我是一名初学者,几乎没有任何帮助,因此我们将不胜感激。我知道上面的代码也很差,所以建议更好的方法也可能会有所帮助。为冗长的问题道歉。对我放轻松。
【问题讨论】: