我正在开发电子机票预订系统。当用户点击故障单状态时,它应该在复选框中显示已预订的座位以及可用的座位。现在我可以使用in_array()
函数在PHP中很好地执行此操作,但我需要在不同的地方显示它。我怎么能给他们看?
我同时拥有booked seats array
和total number of seats
。在PHP中,我使用以下代码来显示它们(AJAX):
$cnt = count($booked_seats);
for($i = 1; $i<=$total_seats; $i++) {
if($i%10 == 0) {
echo '<br />';
}
if(in_array($i,$booked_seats)) {
echo '<input type="checkbox" disabled="disabled" checked="checked" />'.$i;
} else {
echo '<input type="checkbox" name = "book[]" value = "'.$i.'" />'.$i;
}
}
答案 0 :(得分:2)
Smarty中in_array()
的语法是:
{if $needle|in_array:$haystack_array}
所以你的循环看起来像这样:
// PHP:
$smarty->assign('total_seats',$total_seats);
$smarty->assign('booked_seats',$booked_seats);
//在模板中:
{foreach from=$total_seats item=seat_no name=seat_no}
{if $smarty.foreach.seat_no.iteration % 10 == 0} <br /> {/if}
{if $smarty.foreach.seat_no.iteration|in_array:$booked_seats}
<input type="checkbox" disabled="disabled" checked="checked" /> {$smarty.foreach.seat_no.iteration}
{else}
<input type="checkbox" name = "book[]" value = "{$smarty.foreach.seat_no.iteration}" /> {$smarty.foreach.seat_no.iteration}
{/if}
{/foreach}
这是未经测试的,但你明白了......
答案 1 :(得分:0)
在smarty 3的情况下,我的答案与@Quasdunk非常相似,唯一的区别在于in_array方法的语法。 它的形式如下:
{if in_array($needle,$array_element)}.....{/if}
所以你会根据他的解释分配你的内容,但循环也会有所不同,你会改为:
{foreach $total_seats as $seat}
{if $seat@iteration%10==0}
<br />
{/if}
{if in_array($seat_no,$booked_seats)}
<input type="checkbox" disabled="disabled" checked="checked" />{$seat}
{else}
<input type="checkbox" value="{$seat}" />{$seat}
{/if}
{/foreach}