【问题标题】:Loop through two unequal arrays simultaneously in PHP在 PHP 中同时循环遍历两个不相等的数组
【发布时间】:2016-01-10 07:47:05
【问题描述】:

我目前正在遍历 Laravel 5 视图文件中的数组。此循环从数据库中输出派对选项。

partys.blade.php

<div class="row clc-page-padding-left-right-46">
      @foreach($partyThemes as $key => $partyTheme)
        <div class="medium-6 large-3 columns">
          <div class="clc-block-shadowed" style="margin-bottom:0;min-height:375px;background-color:{{ $partyThemeColors[$key] }};">
            <center>
              <a href="#">
                <img src="{{ URL::asset( $partyTheme->image_main ) }}" alt="" />
              </a>
            </center>
            <h4 class="clc-text-align-center"><a href="#">{!! $partyTheme->title !!}</a></h4>
            <p class="clc-text-align-center">
              From R{!! $partyTheme->cost_per_child !!}
            </p>
          </div>
          <p class="clc-text-align-center clc-more-info">
            <a href="#">More Info</a>
          </p>
        </div>
      @endforeach
    </div>

我有另一个数组,其中包含背景颜色的十六进制代码。这是样式属性中下面第 4 行的输出。

$partyThemeColors = array(
  '#55cbbb',
  '#97c86b',
  '#fbdf5e',
  '#ea535d',
  '#97c86b',
  '#55cbbb',
  '#ea535d',
  '#fbdf5e'
);

目前我正在使用主循环的 $key 来选择 $partyThemeColors 数组中的值。 因为 $partyThemeColors 数组比另一个数组短,一旦完成,就会抛出错误。

我怎样才能让 $partyThemeColors 数组在它到达末尾后重置回开头?

这基本上是同时运行两个循环,其中包含不同长度的数组?

【问题讨论】:

  • 获取较短数组的值的数量并根据该值执行for loop
  • 某种检查值是否为空,如果为真则开始一个新的foreach

标签: php arrays loops laravel


【解决方案1】:

使用the modulus operator:

$partyThemeColors[$key % count($partyThemeColors)]

您可能希望从循环中提取计数。

【讨论】:

  • 第一次迭代不是除以0吗?
  • 我相信应该反过来:$key % count($partyThemeColors)。计数是您不想达到或超过的基数。
猜你喜欢
  • 1970-01-01
  • 2021-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-10
  • 2020-01-14
相关资源
最近更新 更多