按数组中最后一个键的值排序



当键的数量未知时,我正试图找出如何根据最后一个键的值对数组进行排序?

所以,如果我有这样的数组:

Array(
  [0] => Array(
      [0] => Bob 
      [1] => A 
      [2] => Parker
  )
  [1] => Array(
      [0] => John 
      [1] => Smith-Doe
  )
  [2] => Array(
      [0] => Giuseppe 
      [1] => Gonzalez
      [2] => Octavio
      [3] => Hernandez
  )
)

我想按数组中的最后一个值进行排序:

  • 朱塞佩·冈萨雷斯-奥克塔维奥·埃尔南德斯
  • Bob A.Parker
  • John Smith Doe
$arr = array(
    array('Bob', 'A', 'Parker'),
    array('John', 'Smith-Doe'),
    array('Giuseppe', 'Gonzalez', 'Octavio', 'Hernandez')
);
usort($arr, 'sort_by_last_item');
var_dump($arr);
function sort_by_last_item($a, $b)
{
    return end($a) > end($b);
}

或者如果您使用的是php5.3:

$arr = array(
    array('Bob', 'A', 'Parker'),
    array('John', 'Smith-Doe'),
    array('Giuseppe', 'Gonzalez', 'Octavio', 'Hernandez')
);
usort($arr, function($a, $b) { return end($a) > end($b); });
var_dump($arr);
$data  = array( /* your data */ );
$output = array();
foreach ( $data as $v ) {
    $output[ end($v) ] = $v;
}
ksort($output);
var_dump($output);

或者:

$data  = array( /* your data */ );
$output = array();
foreach ( $data as $v ) {
    $key = implode(' ', array_reverse($v));
    $output[ $key ] = $v;
}
ksort($output);
var_dump($output);

第二种方法允许您有许多具有相同last元素的记录,并按last元素排序,如果它们相等,则按first before last排序,依此类推…

这是有效的:

function array_last_item_sort($array){
    $return = array();
    $sort = array();
    foreach($array as $i => $item){
        $sort[$i] = $item[count($item) - 1];
    }
    asort($sort);
    foreach($sort as $i => $value){
        $return[] = $array[$i];
    }
    return $return;
}

相关内容

  • 没有找到相关文章

最新更新