我正在尝试使用foreach语句来显示列表ul> li。如果列表没有元素,我该如何处理该标准。
<ul>
<?php foreach($person['CastsMovie'] as $cast): ?>
<li><?php echo $this->Html->link($cast['Movie']['name'], array('controller' => 'movies', 'action' => 'view', $cast['movie_id'], 'admin' => true), array('escape' => false)); ?> (<?php echo date("Y", strtotime($cast['Movie']['MovieDetail']['release_date'])); ?>)</li>
<?php endforeach; ?>
</ul>
答案 0 :(得分:6)
检查是否empty:
if ( !empty( $person ) ) {
foreach ( $person as $cast ) {
echo "<li>$cast</li>";
}
} else {
echo "<li>This play has no cast members.</li>";
}
答案 1 :(得分:1)
实际上,您需要检查一下UL。 否则你最终会得到一个空的“ul”标签,这是不必要的:
<?php if (!empty($person['CastsMovie'])) { ?>
<ul>
<?php foreach($person['CastsMovie'] as $cast) { ?>
<li><?php echo $this->Html->link($cast['Movie']['name'], array('controller' => 'movies', 'action' => 'view', $cast['movie_id'], 'admin' => true), array('escape' => false)); ?> (<?php echo date("Y", strtotime($cast['Movie']['MovieDetail']['release_date'])); ?>)</li>
<?php } ?>
</ul>
<?php } ?>
这意味着:您检查是否有任何列表元素(在您的情况下为此人施放CastsMovies),如果是,则显示列表(ul + li)。如果不是,将省略完整列表(不仅仅是子li元素)。
答案 2 :(得分:0)
首先,在您使用的任何“控制器”中,准备您的数据,使其适合模板。
foreach($person['CastsMovie'] as $key => $cast) {
$cast['html_link'] = $this->Html->link($cast['Movie']['name'],
array('controller' => 'movies',
'action' => 'view',
$cast['movie_id'],
'admin' => true),
array('escape' => false)
);
$cast['html_date'] = date("Y", strtotime($cast['Movie']['MovieDetail']['release_date']));
$person['CastsMovie'][$key] = $cast;
}
然后让你的模板健全且可读
<?php if($person['CastsMovie']: ?>
<ul>
<?php foreach($person['CastsMovie'] as $cast): ?>
<li>
<?=$cast['html_link']?> (<?=$cast['html_date']?>)
</li>
<?php endforeach ?>
</ul>
<?php endif ?>