0

如何在 PHP 中执行蛇形循环或如何在每次循环后反转 PHP 数组我不确定这种方法或技术被称为什么,所以我只是将其称为蛇形循环。

基本上我要做的是遍历一个数组,然后在下次循环时反转该数组的顺序。

我想出了一种似乎有点简单的方法,但我只是不确定这是否是正确的技术,或者是否有更好的方法。

<?php
$rounds = 4;
$teams = array('Team 1', 'Team 2', 'Team 3', 'Team 4') ;

for($round = 1; $round <= $rounds; $round++){
    echo "<h1>Round $round</h1>";

    if ($round % 2 == 0) {
        krsort($teams);
    }else{
        asort($teams);
    }        

    foreach($teams as $team){
        echo "$team<br />";
    }
}

?>

输出:

Round 1
Team 1
Team 2
Team 3
Team 4

Round 2
Team 4
Team 3
Team 2
Team 1

Round 3
Team 1
Team 2
Team 3
Team 4

Round 4
Team 4
Team 3
Team 2
Team 1

基本上你可以看到数组排序ascending$round奇数descending还是偶数。

4

4 回答 4

2

使用 php 的array_reverse函数。

<?php
$rounds = 4;
$teams = array('Team 1', 'Team 2', 'Team 3', 'Team 4') ;

for($round = 1; $round <= $rounds; $round++){
    echo "<h1>Round $round</h1>";
    echo implode("<br/>", $teams);
    $teams = array_reverse($teams);
}

?> 
于 2013-07-17T20:20:29.917 回答
1

我认为反转数组很昂贵,我认为更好的是计算倒排索引:

array A (6 length) 0,1,2,3,4,5

array B (5 length) 0,1,2,3,4

(len-1)-i
//^ this should calculate the inverted index, examples:

//in the array A, if you are index 3: (6-1)-3 = 2, so 3 turns to 2
//in the array A, if you are index 1: (6-1)-1 = 4, so 1 turns to 4
//in the array B, if you are index 3: (5-1)-3 = 1, so 3 turns to 1
//in the array B, if you are index 1: (5-1)-1 = 3, so 1 turns to 3

我不写 PHP,但它应该是这样的:

teams = array('Team 1', 'Team 2', 'Team 3', 'Team 4');
len = teams.length;
myindex; //initializing the var

for(i=0; i<len; i++){
    echo "<h1>Round "+ (i+1) +"</h1>";
    myindex = i;

    if(i%2 == 0) {
        myindex = ((len-1) - i);
    }

    echo team[myindex];
}
于 2013-07-17T20:17:07.947 回答
1

修改代码以实现 array_reverse:

<?php
$rounds = 4;
$teams = array('Team 1', 'Team 2', 'Team 3', 'Team 4') ;

for($round = 1; $round <= $rounds; $round++){
  echo "<h1>Round $round</h1>";

  if ($round % 2 == 0) {
    $teams = array_reverse($teams);
  }    
  foreach($teams as $team){
    echo "$team<br />";
  }
}
?>
于 2013-07-17T20:27:37.457 回答
0

array_reverse是返回数组反转的函数。

如果您试图让 php 数组对象在每个循环中都反转内容,那么您每次都需要设置数组变量;否则,您可以简单地在每个循环中返回 array_reverse 的输出。

于 2013-07-17T20:17:10.843 回答