gpt4 book ai didi

php - 如何合并未知数量的数组

转载 作者:可可西里 更新时间:2023-11-01 14:50:51 25 4
gpt4 key购买 nike

我是 php 的新手,经过研究我还没有找到我理解的答案。我正在使用 php 和 html。我正在从文本文件 (file_get_contents) 中读取。我正在做一个餐厅菜单,其中第一项是“汉堡包”(burgers.txt)。其次是“鸡”等。我使用 explode 函数分离这些文本文件。这是我的代码

<?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 个项目后进行分页。问题是我不知道我将从中读取多少文本文件,所以我不能像上面那样对其进行硬编码。有没有一种方法可以通过某种循环合并我所有的数组,其中一个数组被添加到之前的数组中?

正如我所说,我是初学者,几乎没有任何帮助,因此我们将不胜感激。我知道上面的代码也很差,所以更好的方法建议也可能会有所帮助。为冗长的问题道歉。对我放轻松。

最佳答案

可以合并所有数组,即:

$allData = array();
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)
$allData = array_merge($allData, explode("\n", file_get_contents("txtfiles/".$files[$f])));
}

在下一步中,您可以将 $allData 数组分块

foreach (array_chunk($allData, 10) as $chunk) {
foreach($chunk as $singlePosition) {
//echo
}
echo 'separator';
}

关于php - 如何合并未知数量的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19522448/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com