2015-01-12 76 views
-1

我的代码是:二维数组排序使用PHP

$arr = array(
    array(
     "title" => "Volvo" 
    ), 
    array(
     "title" => "BMW" 
    ), 
    array(
     "title" => "Saab" 
    ), 
    array(
     "title" => "Aam" 
    ) 
); 

$a = aasort($arr,"title"); 

echo "<pre>",print_r($a),"</pre>"; 

function aasort (&$array, $key) { 
    $sorter=array(); 
    $ret=array(); 
    reset($array); 
    foreach ($array as $ii => $va) { 
     $sorter[$ii]=$va[$key]; 
    } 
    natcasesort($sorter); 
    foreach ($sorter as $ii => $va) { 
     $ret[$ii]=$array[$ii]; 
    } 
    $array=$ret; 
    return $array; 
} 

,输出是:

Array 
(
[3] => Array 
    (
     [title] => Aam 
    ) 

[1] => Array 
    (
     [title] => BMW 
    ) 

[2] => Array 
    (
     [title] => Saab 
    ) 

[0] => Array 
    (
     [title] => Volvo 
    ) 

) 
1 

但我想输出,如:

Array 
(
[0] => Array 
    (
     [title] => Aam 
    ) 

[1] => Array 
    (
     [title] => BMW 
    ) 

[2] => Array 
    (
     [title] => Saab 
    ) 

[3] => Array 
    (
     [title] => Volvo 
    ) 

) 
1 

怎么做?

+0

什么问题呢?任何消除?还是我们想要猜测? – NoLiver92

+0

是的,我正在尝试做?任何帮助表示赞赏。 –

+0

看看'array_values' – msfoster

回答

0

您可以重新编制一个阵列array_values()

$array = array_values($ret); 
+0

It works .... Thank你非常 –

0

试试这个它会帮助你:

$result = array(); 

    $result = sortArray($array,'key'); 

这里,$array是排序的数组。所以你可以通过调用sortArray函数对它进行排序。

<?php 

function sortArray($arrData, $p_sort_field, $p_sort_type = false) 
{ 
if(!empty($arrData)) 
{ 
    foreach($arrData as $data) 
    { 
    $newData [] = $data; 
    } 
    for($i=0; $i<count($newData); $i++) 
    { 
    $ar_sort_field[$i]=$newData[$i][$p_sort_field]; 
    } 
    array_multisort($ar_sort_field, ($p_sort_type ? SORT_DESC : SORT_ASC), $newData); 
    return $newData; 
} 
} 

?> 
0

试试这个..

$arr = array(
    array(
    "title" => "Volvo" 
    ), 
    array(
    "title" => "BMW" 
    ), 
    array(
    "title" => "Saab" 
    ), 
    array(
    "title" => "Aam" 
    ) 
    ); 

$arr = msort($arr, array('title')); 

print_r($arr); 

function msort($array, $key, $sort_flags = SORT_REGULAR) { 
    if (is_array($array) && count($array) > 0) { 
     if (!empty($key)) { 
      $mapping = array(); 
      foreach ($array as $k => $v) { 
       $sort_key = ''; 
       if (!is_array($key)) { 
        $sort_key = $v[$key]; 
       } else { 
        // @TODO This should be fixed, now it will be sorted as string 
        foreach ($key as $key_key) { 
         $sort_key .= $v[$key_key]; 
        } 
        $sort_flags = SORT_STRING; 
       } 
       $mapping[$k] = $sort_key; 
      } 
      asort($mapping, $sort_flags); 
      $sorted = array(); 
      foreach ($mapping as $k => $v) { 
       $sorted[] = $array[$k]; 
      } 
      return $sorted; 
     } 
    } 
    return $array; 
} 

结果

Array ([0] => Array ([title] => Aam) [1] => Array ([title] => BMW) 
[2] => Array ([title] => Saab) [3] => Array ([title] => Volvo))`