我有一个下面给出的数组
$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;
答案 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];
}
}
但是如果你的偶数少于奇数,你应该保持谨慎,因为循环将在所有赔率加起来之前完成。您可以在填充新阵列之前或之后检查它。如果在填写新阵列后进行检查,则可以使用array_diff
和array_merge
将缺失的赔率添加到新阵列。