2016-06-09 50 views
-3

我想按數字順序排列一個多維數組,每個項目的第二個值。在沒有密鑰的PHP中多維數組的排序?

這是數組:

$vulc = array(
     array('s',3), 
     array('s',5), 
     array('s',2) 
    ); 

,我想這樣的輸出:

$vulc = array(
     array('s',5), 
     array('s',3),   
     array('s',2) 
    ); 

我嘗試這樣做:

foreach ($vulc as $key => $row) { 
    $distance[$key] = $row[2]; 
} 

array_multisort($distance, SORT_ASC, $vulc); 

但沒有工作:(請幫助我不建議看到其他答案...通常其他答案太難了:(

+1

我會忽略你的「對方回答」此言一出,並鏈接這一點,因爲它真的不能得到任何不那麼困難比這http://stackoverflow.com/questions/2699086/sort-multi-dimensional-array-by-value – Loek

+4

我已經關閉了你的最後一個問題,並在重複有多個解決方案如何解決它:http://stackoverflow.com/q/17364127/3933332我不能做答案更爲明顯。 – Rizier123

+0

@ Rizier123我知道,我看到你的鏈接的問題......但對我來說太難理解那裏接受的答案問題:難以beacause是大的,我不能用php e,因爲我是意大利人,不懂英語 – Borja

回答

1

使用usort功能和嘗試:

function sortByOrder($a, $b) { 
    return $b[1] - $a[1]; // $b[1] - $a[1] because it need to be descending order 
} 

usort($vulc, 'sortByOrder'); 

輸出:

Array 
(
    [0] => Array 
     (
      [0] => s 
      [1] => 5 
     ) 

    [1] => Array 
     (
      [0] => s 
      [1] => 3 
     ) 

    [2] => Array 
     (
      [0] => s 
      [1] => 2 
     ) 

) 
0

您可以排序, 's' 到數組排序:

<?php 
$vulc = array(
    array('s',3), 
    array('s',5), 
    array('s',2) 
); 

foreach ($vulc as $key => $row) { 
    $distance[] = $row[1]; 
} 

array_multisort($distance, SORT_ASC, $vulc); 

foreach ($distance as $row) { 
    $vulcOut[] = ['s', $row]; 
} 

// $vulcOut = array(
//  array('s',5), 
//  array('s',3), 
//  array('s',2) 
//); 
2

使用rsort()

$vulc = array(
     array('s',3), 
     array('s',5), 
     array('s',2) 
    ); 
rsort($vulc); 
echo "<pre>"; 
print_r($vulc); 

輸出

Array 
(
    [0] => Array 
     (
      [0] => s 
      [1] => 5 
     ) 

    [1] => Array 
     (
      [0] => s 
      [1] => 3 
     ) 

    [2] => Array 
     (
      [0] => s 
      [1] => 2 
     ) 

)