Php 循环遍历数组并返回值和HTML

Php 循环遍历数组并返回值和HTML,php,arrays,loops,if-statement,while-loop,Php,Arrays,Loops,If Statement,While Loop,我将post ID存储在一个数组中。我想在数组中循环并显示包含和标记的中的ID,但仅当数组中至少有一个ID时。如果数组为空,则无法返回html。这意味着我应该在循环之前使用某种if语句。不用说,我的php技能非常基础,经过两天的努力,我一事无成。谢谢你的帮助 我的代码(使用Wordpress) 这里有一个更新。我很抱歉发布了所有这些代码,因为很多事情都很混乱。这是三个(或更多)的第二个循环。在几乎相同的第一个循环中显示的ID已被传递。为了不显示任何重复的帖子,只显示上一个循环未检索到的ID 我尝

我将post ID存储在一个数组中。我想在数组中循环并显示包含
标记的
中的ID,但仅当数组中至少有一个ID时。如果数组为空,则无法返回html。这意味着我应该在循环之前使用某种if语句。不用说,我的php技能非常基础,经过两天的努力,我一事无成。谢谢你的帮助

我的代码(使用Wordpress)

这里有一个更新。我很抱歉发布了所有这些代码,因为很多事情都很混乱。这是三个(或更多)的第二个循环。在几乎相同的第一个循环中显示的ID已被传递。为了不显示任何重复的帖子,只显示上一个循环未检索到的ID

我尝试删除所有HTML标记,并在之后使用新的WP_查询查询$postids,但这会检索我创建的所有帖子。我很确定这是继续下去的正确方式,尽管我显然做错了什么

<?php
$tags = wp_get_post_tags($post->ID);
if ($tags) {
  $first_tag = $tags[1]->term_id;
  $args=array(
    'tag__in' => array($first_tag),
    'post__not_in' => array($post->ID),
    'showposts'=>5, //Display this number of related posts
    'ignore_sticky_posts'=>1
   );
  $postids = array();
  $my_query = new WP_Query($args);
  if( $my_query->have_posts() ) {
      echo '<ul id="relatedposts">'; 
      while ($my_query->have_posts()) : $my_query->the_post(); if (!in_array($post->ID, $ids)) {; $postids [] = $post->ID; ?>
      <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title_attribute(); ?>"><?php the_title(); ?></a></li>
      <?php }
    $ids[]= $post->ID; 
    endwhile;
  }
}
?>
      </ul>
<?php if ($postids){ //$postids has at least one value set
    echo '<div>Related posts</div>'; //Outputting the header text. This works! If there are no IDs in the array nothing is shown.
     }; 
?>


  • 有几种方法可以做到这一点

    if ($postids){ //$postids is TRUE (ie $postids is not an empty array)
         //do your output
    }
    


    习惯于真实和真实的简单测试!false是你的朋友

    有几种方法可以做到这一点

    if ($postids){ //$postids is TRUE (ie $postids is not an empty array)
         //do your output
    }
    


    习惯于真实和真实的简单测试!false是你的朋友

    可能是这样的吗?您应该自定义此代码以检索帖子的内容,或者您想做的任何事情

    <?php
    $postIds = array(1, 2, 3, 4, 5);
    ?>
    <html>
    <head>
        <title>Post IDs!</title>
    </head>
    <body>
        <h1>Post IDs!</h1>
    <?php if(empty($postIds)): ?>
        <p>There are no post IDs :(</p>
    <?php else: ?>
        <ul>
    <?php foreach($postIds as $postId): ?>
            <li><?php echo $postId; ?></li>
    <?php endforeach; ?>
        </ul>
    <?php endif; ?>
    </body>
    </html>
    
    
    张贴身份证!
    张贴身份证!
    没有post ID:(


    可能是这样的吗?您应该自定义此代码以检索帖子的内容,或者您想做的任何事情

    <?php
    $postIds = array(1, 2, 3, 4, 5);
    ?>
    <html>
    <head>
        <title>Post IDs!</title>
    </head>
    <body>
        <h1>Post IDs!</h1>
    <?php if(empty($postIds)): ?>
        <p>There are no post IDs :(</p>
    <?php else: ?>
        <ul>
    <?php foreach($postIds as $postId): ?>
            <li><?php echo $postId; ?></li>
    <?php endforeach; ?>
        </ul>
    <?php endif; ?>
    </body>
    </html>
    
    
    张贴身份证!
    张贴身份证!
    没有post ID:(

    这应该可以:

     <?php
    
     // assuming you have an array of ids called $postids
    
     if(count($postids)){
        echo "<div><ul>";
        foreach($postids as $id){
           echo "<li>$id</li>";
        }
        echo "</ul></div>";
     }
    
    
     ?>
    
    count()
    返回数组中的元素数
    $id
    。除零以外的任何数字都将计算为
    true
    ,并输入if语句,零将计算为
    false
    ,整个过程将被跳过

     foreach($ids as $id){
    
    这将遍历数组中的每个元素
    $id
    ,并将其分配给变量
    $id
    。希望
    echo
    语句是自解释的。

    这应该可以:

     <?php
    
     // assuming you have an array of ids called $postids
    
     if(count($postids)){
        echo "<div><ul>";
        foreach($postids as $id){
           echo "<li>$id</li>";
        }
        echo "</ul></div>";
     }
    
    
     ?>
    
    count()
    返回数组中的元素数
    $id
    。除零以外的任何数字都将计算为
    true
    ,并输入if语句,零将计算为
    false
    ,整个过程将被跳过

     foreach($ids as $id){
    

    这将循环遍历数组中的每个元素
    $id
    ,并将其分配给变量
    $id
    。希望
    echo
    语句是自解释的。

    多亏Gordon的大力帮助,我现在有了一个可行的解决方案。所有html都从上面凌乱的原始代码中删除。下面的if语句和foreach loop以一种简单方便的方式呼应html。现在,对和标记进行样式化非常简单

    <?php
      if(count($postids)){
        echo "<div>Related posts<ul>";
        foreach($postids as $id){
           echo '<li><a href="'.get_permalink( $id ).'">'.get_the_title( $id ).'</a></li>';
        }
        echo "</ul></div>";
      }
    ?>   
    

    多亏了Gordon的大力帮助,我现在有了一个可行的解决方案。所有html都从上面凌乱的原始代码中删除。下面的if语句和foreach循环以一种简单方便的方式呼应html。和标记的样式现在非常简单

    <?php
      if(count($postids)){
        echo "<div>Related posts<ul>";
        foreach($postids as $id){
           echo '<li><a href="'.get_permalink( $id ).'">'.get_the_title( $id ).'</a></li>';
        }
        echo "</ul></div>";
      }
    ?>   
    
    
    
    基本上,我已经尝试找出如何使用以下
    标题文本循环数组,但没有任何运气!基本上,我已经尝试找出如何使用以下
    标题文本循环数组,但没有任何运气!谢谢。你的建议很有效,但问题是我在执行if条件之前循环了数组。如果我把它放在我的循环中,它将为循环中检索到的每个帖子输出标题。标题文本是标题文本,并且能够按照我的喜好设置标题样式。在包含帖子的
      之后输出标题看起来很有希望ess和充其量只能处理一些丑陋的位置css攻击。我将尝试更新我的问题并包含我的代码,希望它会更有意义。谢谢你,弗雷德!戈登的解决方案是开箱即用的。我打赌你的解决方案也能解决我的问题,只要我的技能更好地完成最后一步。谢谢。你的建议RK很好,但问题是我在执行if条件之前循环数组。如果我将其放入循环中,它将为循环中检索到的每个帖子输出标题。标题文本用于标题文本,并且能够根据我的喜好对标题进行样式设置。在包含帖子的
        之后输出标题看起来非常没有希望,最多只能在这是一些丑陋的位置css攻击。我会尝试更新我的问题,并加入我的代码,希望它会更有意义。谢谢你,弗雷德!戈登的解决方案是开箱即用的。我打赌你的解决方案也会解决我的问题,只要我的技能更好地完成最后一步。谢谢你,含糊不清!我有两个建议可以使用帮助我解决了问题。你的建议似乎与戈登的解决方案一致。谢谢你!我有两个建议可以帮助我解决问题。你的建议似乎与戈登的解决方案一致。