2016-08-22 130 views
1

我有一個數組下面PHP - 打印偶數和(排序)數組的奇數

$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

你能分享你試過嗎? –

+0

我編輯了我的文章#Jay – syed

+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_diffhttp://php.net/array_merge

+0

好的......謝謝:) – syed

+0

只有奇數和偶數值交替排列時,這纔會起作用。 – Rizier123

+0

@ Rizier123爲什麼只有它們交替排列才能起作用? –