使用正确的位置在一个循环项中显示每两个数组项

时间:2017-11-04 21:00:47

标签: php arrays sorting for-loop math

我正在尝试做一些适合设计的东西,所以我必须在1循环中显示2项。另外,根据这种设计,应该在每个4循环中换行。换行自动应用,但固定为4.因此,在4循环中它实际显示8个项目。但是,我坚持的观点是;项目没有显示在我想要的位置。你可以在图片中看到我想要做的更多细节。

  • 红色数字= 当前展示位置
  • 绿色数字= 展示位置
  • 黄色方框= 用于循环项目(8项)
  • 黑匣子= 数组中的项目(16项)

See the picture

<ul class="gen">
  <li>
    <ul>
      <li class="ic">a</li>
      <li class="ic">b</li>
    </ul>
  </li>
  <li>
    <ul>
      <li class="ic">c</li>
      <li class="ic">d</li>
    </ul>
  </li>
  <li>
    <ul>
      <li class="ic">e</li>
      <li class="ic">f</li>
    </ul>
  </li>
  <li>
    <ul>
      <li class="ic">g</li>
      <li class="ic">h</li>
    </ul>
  </li>
  <li>
    <ul>
      <li class="ic">i</li>
      <li class="ic">j</li>
    </ul>
  </li>
  <li>
    <ul>
      <li class="ic">k</li>
      <li class="ic">l</li>
    </ul>
  </li>
  <li>
    <ul>
      <li class="ic">m</li>
      <li class="ic">n</li>
    </ul>
  </li>
  <li>
    <ul>
      <li class="ic">o</li>
      <li class="ic">p</li>
    </ul>
  </li>
</ul>
// 16 items
$items = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'); 
$half = count($items) / 2;
$k = 0;

echo '<ul class="gen">';
for($i = 0; $i<$half; $i++) {
  echo '<li>';
  echo '<ul>';
  echo '<li class="ic">'.$items[$k].'</li>';
  echo '<li class="ic">'.$items[$k+1].'</li>';
  echo '</ul>';
  echo '</li>';
  $k = $k+2;
}
echo '</ul>';

正如您所看到的,项目不是按字母顺序从左到右放置。

这是我使用的循环:

<btn@Button>:
    background_normal: ''

<Top>:
    orientation: 'horizontal'
    btn:        
        background_color: 0.1,1,0.1,.9
        on_release: root.SQLdef(1, 1)       
    btn:
        background_color: 1,0.4,0,.9
        on_release: root.SQLdef(0, 1)       
    btn:
        background_color: 1,0,0,.9
        on_release: root.SQLdef(-1,1)

<Bottom>:   
    orientation: 'horizontal'
    Button:
        text: "Inchecken"
    Button:
        text: "Uitchecken"

<Container>:
    rows:2
    color: None
    Top:
    Bottom:

3 个答案:

答案 0 :(得分:1)

假设您将处理格式化,您的代码可以更改为:

$items = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p'); 

for($first = 0; $first < count($items); $first += 8) {
    for($add = 0; $add < 4; $add++) {
        echo $items[$first + $add]; //first item
        echo $items[$first + $add + 4]; //second item
    }
}

答案 1 :(得分:1)

我希望这会有所帮助。您可以运行此代码并查看输出。

=B2+COUNTIF(C2:F2,"N")*50

答案 2 :(得分:0)

我可以看到您的HTML代码吗?这是一个建议,显示你的结果(运行代码片段并使用我的css和php循环);

#wrapper{
 background-color:rgba(0,0,0,0.6);
 padding:10px;
}

.result{
 display:inline-block;
 padding:7px;
 border:3px solid #FEBF01;
 width:120px;
}

.result-child{
 display:block;
 padding:10px 10px;
 background-color:rgba(0,0,0,0.8);
 color:rgba(50,255,100,1);
 font-size:2em;
 text-align:right;
}

.result .result-child:first-of-type{
 margin-bottom:10px;
}
<div id="wrapper">
 <div class="result">
  <div class="result-child">1</div>
  <div class="result-child">1</div>
 </div>

 <div class="result">
  <div class="result-child">2</div>
  <div class="result-child">2</div>
 </div>
</div>

循环代码:

for($i = 0; $i<$half; $i++) {
  echo "<div class='result'>";
  echo "<div class='result-child'>".$items[$k]."</div>"; //first item
  echo "<div class='result-child'>".$items[$k+1]."</div>"; //second item
  echo "</div>";
  $k = $k+2;
}