在数组PHP中安排数字

时间:2016-04-20 07:58:54

标签: php arrays

我目前正在研究项目,它需要安排一个数组,使得没有相同的数字连续出现。

$a = [4,1,2,1,3,4,4,4],这里数字4连续出现。我需要避免这种情况,所需的输出必须或类似于$a = [4,1,4,1,4,2,3,4]

我做了什么:

$a=[4,1,2,1,3,4,4,4];
for($i=0;$i<count($a)-1;$i++)
{
    if($a[$i]==$a[$i+1])
    {
        $k=$j=$i+1;
        while($a[$j]==$a[$k])
        {
            $k++;
            if($k >= count($a))
                $k=0;
        }
        $temp=$a[$j];
        $a[$j]=$a[$k];
        $a[$k]=$temp;
    }
}
var_dump($a);

输出:

array (size=8)
  0 => int 4
  1 => int 4
  2 => int 2
  3 => int 1
  4 => int 3
  5 => int 4
  6 => int 1
  7 => int 4

这里有4个连续出现。

有没有简单的方法来实现这一目标?请帮我解决这个问题。

提前致谢。

1 个答案:

答案 0 :(得分:2)

试试这个 -

$a=[4,1,2,1,3,4,4,4];
$n = count($a);
for($k=0;$k<$n;$k++)
{
  for($i=0;$i<$n-1;$i++)
  {
          if($a[$i]==$a[$i+1])
          {   
                  $cir = ($i+$k)%$n;
                  $temp=$a[$i+1];
                  $a[$i+1]=$a[$cir];
                  $a[$cir]=$temp;
          }
  }
}
var_dump($a);