【问题标题】:Put Correct order in php array_chunk loop row and multiple columns在 php array_chunk 循环行和多列中放置正确的顺序
【发布时间】:2017-08-17 22:53:16
【问题描述】:

我有一个数组。 示例:

$array = array(
    "Row1",
    "Row2",
    "Row3",
    "Row4",
    "Row5",
    "Row6",
    "Row7",
    "Row8",
    "Row9",
    "Row10",
    "Row11",
    "Row12",
    "Row13",
    "Row14",
    "Row15",
    "Row16",
    "Row17",
    "Row18",
    "Row19",
    "Row20",
    "Row21",
    "Row22",
    "Row23",
    "Row24",
    "Row25",
    "Row26",
    "Row27",
    "Row28",
);

$columns = 6;

$modified_array = array_chunk($array, ceil(count($array) / $columns) );

我有一个这样的foreach

foreach ($modified_array as $key => $value) {

}

我的数组 chung 将我的数组分成 6 列,并且我在循环行 3 中具有不同的列布局,我想在每个循环行中重复此操作。

我有一些条件要在我的 foreach 的键值中停止以显示不同的列,但循环不能很好地工作,我不能我的数组中的所有元素

查看我的打印Imagem Print 或者我的测试 php 代码Php Example

我希望循环的每一行都必须与数组的顺序相同。

我的 foreach 的完整代码:

foreach ($modified_array as $key => $value) {
if($key == 0 || $key % 2 == 0){
    $html.= '<div class="row" style=""> <strong>Line '.$key.'</strong><br>';

    $html.= '
    <div class="col-md-6" style="">
    Column  1
        <div class="col-md-12" style="background-color:#21e934; height:175px; padding: 0 !important; margin: 0 !important;"><img src="http://via.placeholder.com/555x175" class="img-responsive"></div>
        <!--col-md-12-->
        <div class="col-md-12" style="background-color:#3c6040; height:175px; color:#FFF">text row Key:: '.$key.' value: '.$value[0].'</div>
        <!--col-md-12-->
    </div>
    <!--col-md-6-->';

    $html.= '
    <div class="col-md-6" style="">
        Column  2';

    $html.= '
        <div class="col-md-12" style="background-color:#bb1ff5; height:170px; padding: 0 !important; margin: 0 0 10px 0 !important;">
            <div class="col-md-6" style="background-color:#bb1717; height:170px; color:#fff">text row Key: '.$key.' value: '.$value[1].'</div>
            <div class="col-md-6 text-right" style="background-color:#f5651f; padding: 0 !important; margin: 0 !important;"><img src="http://via.placeholder.com/278x170" class="img-responsive"></div>
        </div>';

        $html.= '
        <div class="col-md-12" style="background-color:#3c6040; height:170px; padding: 0 !important; margin: 0 !important;">
            <div class="col-md-6" style="background-color:#f5651f; padding: 0 !important; margin: 0 !important;"><img src="http://via.placeholder.com/278x170" class="img-responsive"></div>
            <div class="col-md-6" style="background-color:#f5ac1f; height:170px; color:#fff">text row Key: '.$key.' value: '.$value[2].'</div>
        </div>';
        $html.= '
    </div>
    <!--col-md-6-->
    </div>';
}


if($key == 1 || $key % 2 == 1){
    $html.= '
    <div class="row" style=""><strong>Line '.$key.'</strong><br>


    <div class="col-md-6" style="">
    Column  3';


    $html.= '
    <div class="col-md-12" style="background-color:#3c6040; height:170px; padding: 0 !important; margin: 0 0 10px 0 !important;">
        <div class="col-md-6" style="background-color:#f5ac1f; height:170px;">text row Key: '.$key.' value: '.$value[0].'</div>
        <div class="col-md-6" style="background-color:#f5651f; padding: 0 !important; margin: 0 !important;"><img src="http://via.placeholder.com/278x170" class="img-responsive"></div>

    </div>
    <!--col-md-12-->

    <div class="col-md-12" style="background-color:#bb1ff5; height:170px; padding: 0 !important; margin: 0 !important;">
        <div class="col-md-6" style="background-color:#f5651f; padding: 0 !important; margin: 0 !important;"><img src="http://via.placeholder.com/278x170" class="img-responsive"></div>
        <div class="col-md-6" style="background-color:#f5ac1f; height:170px;">text row Key: '.$key.' value: '.$value[1].'</div>
    </div>
    <!--col-md-12-->

</div>
<!--col-md-6-->

<div class="col-md-6" style="">
    Column  4';

    $html.= '
    <div class="col-md-12" style="background-color:#21e934; height:175px; padding: 0 !important; margin: 0 !important;"><img src="http://via.placeholder.com/555x175" class="img-responsive"></div>
    <div class="col-md-12" style="background-color:#3c6040; height:175px; color:#FFF">text row Key:: '.$key.' value: '.$value[2].'</div>
</div>
<!--col-md-6-->

    </div>
    <!--row-->

    ';

}

}

谢谢

【问题讨论】:

  • 请在您的问题中直接包含相关代码,而不是在第三方网站上。另外,老实说,我不知道您所说的“我希望每个颜色行都有一个具有相同顺序的数组项”是什么意思。
  • @PatrickQ 怎么格式化这样的代码?
  • @PatrickQ 抱歉我的英语不好,我很难过“我希望我的数组的循环元素具有相同的数组顺序。”
  • 这是因为您使用的是 boostrap 及其类,响应式指令将您的 div 放在列中,因此在您的 div 上添加 boostrap 类之后,请尝试在 et 之前不引导格式化
  • @Fky 是我想要的 boostrap。但问题是,如果你在第 1 行看到我的 php 示例,值应该是并以数组值 Row4 开头。我用我的 foreach 的完整代码编辑我的帖子

标签: php loops


【解决方案1】:

首先简化你的 if 语句

if($key % 2 == 0) {
 // your code for odd index
}else {
 // your code for even index
}

接下来,你的块给了你 4 个项目,而你只使用了 3 个,所以尝试按 3 分块并告诉我

$modified_array = array_chunk($array, 3);

【讨论】:

  • 在我的数组中,如果你看到我的例子,你必须看到main.xfiddle.com/code_73079445.php
  • 所以你必须使用 $value[3] 并添加相关的 html 到它。你正在使用 $value[0], $value[1], $value[2] 但不是 $value [3]
  • 我认为你有理由,问题出在块数上。
  • @IvoBarbosa 是的 ;)
  • 我已经用了两天时间来启动并运行它,看来问题很容易解决。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-01
  • 2013-07-23
  • 1970-01-01
  • 1970-01-01
  • 2019-08-25
  • 1970-01-01
相关资源
最近更新 更多