2016-08-22 18 views
1

の(ソート)奇数私はPHP - でも印刷、配列

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

の下に指定された配列を持っていても番号が同じ順序と奇数番号のままになりながら、私は、配列の値を印刷しようとしていますソートされているすなわち59,57,55,53,51

出力は、私は2つの差分の変数に偶数と奇数を分離しました

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

okay ... thankyou :) – syed

+0

これは、奇数と偶数の値が交互に並んでいる間のみ有効です。 – Rizier123

+0

@ Rizier123彼らは交互の順序で動作するのはなぜですか? –