【问题标题】:Loop through an array and return the values sorted by a grouping pattern遍历数组并返回按分组模式排序的值
【发布时间】:2014-01-15 21:01:03
【问题描述】:

我正在尝试遍历一个数组并返回按模式排序的值(两个一组)。我的抽象数学技能让我失望了。我很困惑,我无法弄清楚模式。这是我目前所拥有的。

$ars = array(
    0 => "red",
    1 => "blue",
    2 => "green"
    3 => "yellow",
    4 => "purple"
    5 => "black",
    6 => "white",
    7 => "orange"
);
$group_1 = '';
$group_2 = '';
foreach ( $ars as $ar ) :
   if ($ar == 0 || $ar == 1 ) :
     $group_1 .= $ar;
  elseif ($ar == 2 || $ar == 3) :
    $group_2 .= $ar;
  elseif ($ar == 4 || $ar == 5) :
    $group_1 .= $ar
  elseif ($ar == 6 || $ar == 7) :
    $group_2 .= $ar;
  endif;
endforeach;
echo group_1; //result (red,blue,purple,black)
echo group_2; //result (green,yellow,white,orange)

无法创建有效的 foreach 语句,该语句将通过可变数量的 $ars 进行排序并在此分组中返回它们。任何帮助将不胜感激。

【问题讨论】:

  • @MackieeE 好收获!固定。

标签: php arrays string grouping


【解决方案1】:
$ars = array(
    "red",
    "blue",
    "green",
    "yellow",
    "purple",
    "black",
    "white",
    "orange"
);

$array1 = array();
$array2 = array();
for($i=0;$i<count($ars);$i++){
    if ($i%4>=2)$array2[] = $ars[$i];
    else $array1[] = $ars[$i];
}

print_r($array1);
print_r($array2);

哦,对不起,为时已晚。但也许最好将项目排序到一个数组中?

【讨论】:

  • 称为模数。返回除法的其余部分。 0/4 = 0,休息 0; 1/4 = 0,休息 1; 2/4 = 0,休息 2; 3/4 = 0,休息 3; 4/4 = 1,其余为 0。在这种情况下,用于对长度可被 4 整除的数组进行无限循环。将 4 的前两个结果写入数组 1,将后 2 个结果写入数组 2。
猜你喜欢
  • 2012-12-29
  • 1970-01-01
  • 2015-10-27
  • 2021-12-17
  • 2016-01-10
  • 1970-01-01
  • 2015-04-28
  • 1970-01-01
  • 2012-03-10
相关资源
最近更新 更多