关于php:foreach循环如何期待第一个结果?

foreach loop how to expect first result?

本问题已经有最佳答案,请猛点这里访问。

使用codeigner框架,我这里有这个代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php

foreach ($allposts as $posts) {
echo '
   
    <img class="img-responsive user-photo" src="https://ssl.gstatic.com/accounts/ui/avatar_2x.png">
    <!-- /thumbnail -->
    <!-- /col-sm-1 -->

   
   
   
    author_name).'
">'.$posts->author_name.' <span class="text-muted">'.unix_to_human($posts->post_date).'</span>
   
   
    '.$posts->post.'
    <!-- /panel-body -->
    <!-- /panel panel-default -->
    <!-- /col-sm-11 -->';
}
?>

现在我想把我的第一个结果或者第一个帖子排除在外?这是可能的

还有一个问题,我可以做一些类似于展示帖子的事情吗?但我的意思是一个接一个地排列右边和左边的第二个?


可以在foreach外部初始化变量,并在迭代内部进行计数。

1
2
3
4
5
6
7
8
9
10
$count=0;
foreach($allposts as $posts)
{
    $count++; // incrememnt

    if($count==1)
    {
       // this is the first post
    }
}

选项2:用for循环代替foreach

1
2
3
4
5
for($i=0; $i<=count($allposts); $i++)
{
    if($i==0) // this is the first post.
    echo $allposts[$i];
}

使用CSS浮动日志:

1
2
3
4
5
6
7
.post:nth-child(odd){
float: left;
}

.post:nth-child(even){
float: right;
}

1
2
3
4
5
6
7
8
foreach($value as $k => $v)
{
    if($k === 0)
    {
        continue;
    }
    // rest your case
}


您可以在foreach循环之外声明var$count,将其初始化为0并在循环结束时递增。在循环开始时,检查$count变量是否为0—如果是这样—跳过echo。要显示一行左对齐和一行右对齐,请检查相同的$COUNT变量:如果$COUNT%2==0,则将一个方向与另一个方向对齐。