Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP:为每2个结果回显一些内容_Php_Loops_Foreach_Conditional - Fatal编程技术网

PHP:为每2个结果回显一些内容

PHP:为每2个结果回显一些内容,php,loops,foreach,conditional,Php,Loops,Foreach,Conditional,我有一个简单的foreach循环,它输出我想要的信息 但是,我想为每两个结果使用一个div来包装它。 我尝试了模运算符,但没有成功(结果适用于每个结果) 所以,我的代码: foreach ($result->data as $info) { // A open div to wrap two results echo 'something'; // An closing div to wrap the previous two results } 添加索引计数,

我有一个简单的foreach循环,它输出我想要的信息

但是,我想为每两个结果使用一个div来包装它。 我尝试了模运算符,但没有成功(结果适用于每个结果)

所以,我的代码:

foreach ($result->data as $info) {

    // A open div to wrap two results
    echo 'something';
    // An closing div to wrap the previous two results
}

添加索引计数,然后检查其在代码中是否可被2整除。 在本例中,if块需要位于foreach循环的顶部,因为我从0开始$I。请停止编辑该部分:)

$i=0;
//在这里创建循环之前的第一个新div。
回声'//第一组
foreach($result->data as$info){
//用于包装前两个结果的结束div
如果($i%2){
//这里的代码将在每两次迭代后出现
//IE:关闭div,然后打开一个新的。类似这样的
回声';
}
//用于包装两个结果的打开div
呼应‘某物’;
$i++;
}
//在循环后关闭最后一个div,在这里。
回声';

最简单的方法:按2步迭代

for ($cc = 0; $cc<count($result->data); $cc += 2) {
    // here >> start div container for both
    echo $result->data[$cc];
    if (defined($result->data[$cc+1])) 
         echo $result->data[$cc+1];
    // here >> end div container for both
}
用于($cc=0;$ccdata)$cc+=2){
//此处>>启动这两个容器的div容器
echo$result->data[$cc];
如果(已定义($result->data[$cc+1]))
echo$result->data[$cc+1];
//此处>>结束这两个容器的div
}
为清晰起见,省略了HTML


如果结果包含奇数项,您还可以添加else分支以输出占位符。

设置两个变量,string和int
如果int变量的值不是偶数,则将值保存在字符串变量中
当第二个变量是偶数时
用div包起来就可以了

foreach ($result->data as $i=>$info) {
    if ($i % 2 == 0) echo '<div>';
    echo $info;
    if ($i % 2 == 1) echo '</div>';
}
if (count($result->data) % 2 == 1) echo '</div>';
foreach($result->data as$i=>$info){
如果($i%2==0)回显“”;
echo$info;
如果($i%2==1)回显“”;
}
如果(计数($result->data)%2==1)回显“”;

正是你问的;)

对于从数组中每隔两次输出一次结果,您也可以使用

<?php

$array = range( 1, 20 );

foreach( array_chunk( $array, 2 ) as $pair ) {
  echo '<div>' , implode( ' ', $pair ) , '</div>';
}

// <div>1 2</div>
// <div>3 4</div>
// etc

?>

//只要简单

<?php 
   foreach($result->data as $i=>$info){
     if($i<5){
        echo $info
}
}          
 ?>


使用模运算符的想法听起来很合理。你是怎么用的?显示您的(不工作)tryPut a
,用于($i=0;$iModulus使得没有额外的嵌套循环变得非常简单。@AndrewCoder我同意你的观点,我现在看到了你的答案。但是当它有两个以上的结果时,它不会正确地将结果括起来,因为你在循环之前打开了div。
div
打开和关闭也应该是循环的一部分,只是在不同的范围内。是的。我就是这样做这种类型的操作的.在我的用例中工作得很好。还有其他方法可以做到。尽管第一个和最后一个div仅包含一个元素,但您的解决方案几乎成功了。我不认为是这样。循环将在第一个div结束前的第三次迭代中,在第二次迭代中打开。只要总项可被2整除,它应该输出正确…或者,一个额外的项目将是在一个div自己在最后。谢谢@Sebastian Sejzer工作得很有魅力!清晰和周到!
<?php 
   foreach($result->data as $i=>$info){
     if($i<5){
        echo $info
}
}          
 ?>