条件语句如果全为空,则不显示

时间:2011-03-14 06:12:35

标签: php

<ul class="artist-links">
    <?php if(!empty($artist_website)) { ?><li class="artist-website"><a href="<?=$artist_website?>" target="_blank"><img src="<?php bloginfo('template_url') ?>/images/artist-website.png" alt="<?php the_title(); ?> Website" /></a></li><?php } ?>
    <?php if(!empty($artist_youtube)) { ?><li class="artist-youtube"><a href="http://youtube.com/<?=$artist_youtube?>" target="_blank"><img src="<?php bloginfo('template_url') ?>/images/artist-youtube.png" alt="<?php the_title(); ?> Youtube" /></a></li><?php } ?>
    <?php if(!empty($artist_twitter)) { ?><li class="artist-twitter"><a href="http://twitter.com/<?=$artist_twitter?>" target="_blank"><img src="<?php bloginfo('template_url') ?>/images/artist-twitter.png" alt="<?php the_title(); ?> Twitter" /></a></li><?php } ?>
</ul>

我想让这个无序列表只在至少有一个变量(artist-website,artist-youtube,artist-twitter)不为空时显示。因此,如果所有变量都为空,则此列表根本不会显示。在此代码之前我可以添加什么才能使其工作?

3 个答案:

答案 0 :(得分:1)

我建议稍微改变你的设计。

//Initialize the variables and define a fixed array for easy manipulation
if($website) { $artist['website'] = $website; }
if($youtube) { $artist['youtube'] = $youtube; }
if($twitter) { $artist['twitter'] = $twitter; }

// If somehow, $artist contains values
if(count($artist)) { ?>
<ul class="artist-links"
   <? foreach($artist as $key=>$value) { ?>
      <li class="artist-<?=$key?>">
         <a href="<?=$value?>" target="_blank">
           <img src="theimage.jpg" />
         </a>
      </li>   
   <? } ?>
<?
}
?>

答案 1 :(得分:0)

如果它们都是空的,请在开头检查:

代码

<?php if(!(empty($artist_website) && empty($artist_youtube) && empty($artist_twitter))) : ?>

<ul class="artist-links">
    <?php if(!empty($artist_website)) { ?><li class="artist-website"><a href="<?=$artist_website?>" target="_blank"><img src="<?php bloginfo('template_url') ?>/images/artist-website.png" alt="<?php the_title(); ?> Website" /></a></li><?php } ?>
    <?php if(!empty($artist_youtube)) { ?><li class="artist-youtube"><a href="http://youtube.com/<?=$artist_youtube?>" target="_blank"><img src="<?php bloginfo('template_url') ?>/images/artist-youtube.png" alt="<?php the_title(); ?> Youtube" /></a></li><?php } ?>
    <?php if(!empty($artist_twitter)) { ?><li class="artist-twitter"><a href="http://twitter.com/<?=$artist_twitter?>" target="_blank"><img src="<?php bloginfo('template_url') ?>/images/artist-twitter.png" alt="<?php the_title(); ?> Twitter" /></a></li><?php } ?>
</ul>

<?php endif; ?>

说明

基本上我们检查每个变量的条件为“空”。如果所有3都为空,则AND(true,true,true)的结果为true。然后我们看到“!”或NOT运算符,它反转true并使其成为false。因此,如果所有变量都为空,则不要打印其中的行。

您可能还会注意到我使用的“:”/“endif”语法,当我拼接到html标签时,我发现它更整洁。

答案 2 :(得分:0)

如果您想完全按照上述说法行事:

  

我想制作这个无序列表   只出现至少一个   变量(艺术家网站,   artist-youtube,artist-twitter)不是   空。

这样做

<?php 
  if(!empty($artist_website) || !empty($artist_youtube) || !empty($artist_twitter)) {
 //Do what you want to do. Like show the ordered list. 
  } //End of if statement
?> 

如果至少有一个变量具有非空值,则传递条件。