【发布时间】:2015-04-06 10:55:24
【问题描述】:
我正在尝试制作一张桌子,其中包含从 A[1-20] 到 J[1-20] 的某种电影院座位。我有一个包含预留座位的 txt 文件,如下所示:
A2;
A1;
A3;
A7;
如果有座位,桌子的bgcolor必须是红色。这是完整的代码:
<?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
}
?>
我不知道为什么当if(strcmp($value,$arrTable[$counter])==0) 或//if($value == $letter.$j) 时,它只抓住第一个座位“A2”。但是当我把 txt 文件改成这样时:
A2;A1;A3;A7;
IF 可以全部捕获。像这样连接字符串是错误的吗? $seat.= fgets($file);。我该怎么做才能使它与第一个 txt 文件一起使用?对不起我的英语不好。
【问题讨论】:
-
请包括您当前的输出和您的预期输出! (如果它太大,只需做一个小例子,以便我们看到你想要什么以及你现在拥有什么)
-
$seats_splitted = file($path,FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES) or exit("cant open file"); array_walk($seats_splitted, function($seat) { $seat = trim(seat, ';'); }); -
仅供参考:您可以接受如何最大程度地帮助您并解决您的问题的答案 (meta.stackexchange.com/q/5234)!
标签: php arrays text-files concatenation explode