使用新行PHP分解文本文件中的连接字符串
我试着做一张桌子,从a[1-20]到J[1-20]的某种电影院座位。我有一个txt文件,其中包含保留的座位,如下所示:使用新行PHP分解文本文件中的连接字符串,php,arrays,text-files,concatenation,explode,Php,Arrays,Text Files,Concatenation,Explode,我试着做一张桌子,从a[1-20]到J[1-20]的某种电影院座位。我有一个txt文件,其中包含保留的座位,如下所示: A2; A1; A3; A7; 如果预订了座位,桌子的颜色必须是红色。这是完整的代码: <?php $file = fopen($path,"r") or exit("cant open file"); $seat=""; while(!feof($file)) { $seat.= fgets($file); } $seat_splitted = explod
A2;
A1;
A3;
A7;
如果预订了座位,桌子的颜色必须是红色。这是完整的代码:
<?php
$file = fopen($path,"r") or exit("cant open file");
$seat="";
while(!feof($file))
{
$seat.= fgets($file);
}
$seat_splitted = explode(";",$seat);
fclose($file);
$arrTable[]="";
$letter="";
$tableContent="";
for($i = 0,$counter=0;$i<10;$i++,$counter++)
{
if($i==0)
$letter="A";
else if($i==1)
$letter="B";
else if($i==2)
$letter="C";
else if($i==3)
$letter="D";
else if($i==4)
$letter="E";
else if($i==5)
$letter="F";
else if($i==6)
$letter="G";
else if($i==7)
$letter="H";
else if($i==8)
$letter="I";
else if($i==9)
$letter="J";
?>
<tr>
<?php
for($j = 1;$j<21;$j++)
{
$arrTable[$counter]= $letter.$j;
foreach($seat_splitted as $value)
{
if(strcmp($value,$arrTable[$counter])==0)
//if($value == $letter.$j)
{
$GLOBALS['color']="red";
break;
}
else
$GLOBALS['color']="white";
}
?>
<td bgcolor="<?php echo $GLOBALS['color']; ?>"> <?php echo $arrTable[$counter]?> </td>
<?php
$counter++;
}
?>
</tr>
<?php
}
?>
如果能抓住他们。这样连接字符串是错误的吗<代码>$seat.=fgets($file)代码>。我该怎么做才能使它与第一个txt文件一起工作?很抱歉我的英语不好。如果您像使用
explode
一样使用,您将获得以下数组:
["A2","\nB1","\nC3"...]
所以您必须处理\n
也许您可以尝试一下作为explode(;\n“,$seat)
更新:在某些系统中,您需要使用\r\n。因此,这里是正确的最终解决方案:
explode(;\r\n“,$seat)
我认为这样的解决方案应该适合您。我把一切都简化了一点
一,。首先,我创建一个包含所有座位的数组($seats
)。其结构如下:
Array
(
[A] => Array
(
[1] => free
[2] => free
[3] => free
//...
//...
Array
(
[A] => Array
(
[1] => reserved
[2] => free
[3] => reserved
//...
//...
二,。在此之后,我将文件中的所有预留座位放入一个数组中。(更好的解决方案是将所有这些数据存储在数据库中!)
三,。然后,我循环遍历每个预留座位,并将其设置为$seats
数组中的座位,这样它就会得到如下结果:
Array
(
[A] => Array
(
[1] => free
[2] => free
[3] => free
//...
//...
Array
(
[A] => Array
(
[1] => reserved
[2] => free
[3] => reserved
//...
//...
四,。最后,我只是简单地打印表格
代码:
请包括您的当前输出和预期输出!(如果太大,请举一个小例子,让我们看看您想要什么和您现在拥有什么)
$seats\u splitted=file($path,file\u IGNORE\u NEW\u line | file\u SKIP\u EMPTY\u line)或退出(“无法打开文件”);数组_walk($seats_splited,function($seat){$seat=trim(seat,“;”);})代码>仅供参考:您可以接受答案,即如何最大程度地帮助您并解决您的问题()!仅供参考:它也可能是\r\n
.woah,它与'\r\n'一起工作,但不能赶上最后一个座位“A7”@FirmansyahRamadhan如果你在输入数据的末尾添加一行新行,你会发现它有效。@FirmansyahRamadhan你介意将我标记为最佳答案吗?哦,天哪,有这么多数组函数我以前不知道。我是php新手。非常感谢,这真的很有启发性!:)
A 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
B 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
C 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
E 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
F 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
G 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
H 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
I 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
J 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20