php - 打印偶数和(已排序)数组的奇数

时间:2016-08-22 17:47:04

标签: php arrays

我有一个下面给出的数组

$array = array(50,51,52,53,54,55,56,57,58,59);

我正在尝试打印数组的值,而偶数将保持相同的顺序,奇数被排序,即59,57,55,53,51

输出应该像

50,59,52,57,54,55,56,53,58,51

我在两个差异变量中分离了偶数和奇数。我该怎么办?

这是我的代码

  $even= "";
  $odd= "";

for($i=50;$i<=59;$i++)
{
    if($i%2==0)
    {
        $even.=$i.",";
    }else $odd.=$i.","; 
}   
echo $even.$odd; 

1 个答案:

答案 0 :(得分:3)

不是将平均值和赔率推入一个字符串,而是将它们分别推入一个数组,然后将数据反向排序,然后循环通过其中一个(最好通过偶数数组)并添加偶数和奇数到一个新阵列。

我就是这样做的:

$array = array(50,51,52,53,54,55,56,57,58,59);
$odds = array();
$even = array();
foreach($array as $val) {
    if($val % 2 == 0) {
        $even[] = $val;
    } else {
        $odds[] = $val;
    }
}

sort($even);
rsort($odds);

$array = array();
foreach($even as $key => $val) {
    $array[] = $val;
    if(isset($odds[$key])) {
        $array[] = $odds[$key];
    }
}

https://3v4l.org/2hW6T

但是如果你的偶数少于奇数,你应该保持谨慎,因为循环将在所有赔率加起来之前完成。您可以在填充新阵列之前或之后检查它。如果在填写新阵列后进行检查,则可以使用array_diffarray_merge将缺失的赔率添加到新阵列。

http://php.net/array_diff http://php.net/array_merge