排序有什麼更好的步驟

來源:互聯網
上載者:User
排序有什麼更好的方法
array(
[0] =>array(
'name' => "a",
'time' => '879798'),
[1] = >array(
'name' => "a9",
'time' => '85665565'),
[2] = >array(
'name' => "hdhdjd",
'time' => '8154465'),
[3] = >array(
'name' => "a",
'time' => '800000'),
[4] = >array(
'name' => "dr",
'time' => '789898'),
);


是一個已經按照time排序好的數組
現在要排這樣

array(
[0] =>array(
'name' => "a",
'time' => '879798'),
[1] = >array(
'name' => "a",
'time' => '800000'),
[2] = >array(
'name' => "a9",
'time' => '85665565'),
[3] = >array(
'name' => "hdhdjd",
'time' => '8154465'),

[4] = >array(
'name' => "dr",
'time' => '789898'),
);

把name相同的在一起。以第一個出現的次序為大。

不知道有什麼好方式啊,代碼寫的漂亮點的。

------解決方案--------------------
PHP code
$ar = array(0 =>array( 'name' => "a", 'time' => '879798'),1 => array( 'name' => "a9", 'time' => '856565'), //85665565 ? 樣本資料有問題吧,看不出是按time排序的!2 =>array( 'name' => "hdhdjd", 'time' => '815465'),3 =>array( 'name' => "a", 'time' => '800000'),4 =>array( 'name' => "dr", 'time' => '789898'),);$result = array();$len = count($ar);for ($i = 0; $i < $len; $i ++) {    $result[] = array_shift($ar);    for ($j = 0; $j < count($ar); $j ++) {        if ($ar[$j]['name'] == $result[count($result) - 1]['name']) {            $result[] = array_splice($ar, $j, 1);            break;        }    }}echo '
';print_r($result);/*Array(    [0] => Array        (            [name] => a            [time] => 879798        )    [1] => Array        (            [0] => Array                (                    [name] => a                    [time] => 800000                )        )    [2] => Array        (            [name] => a9            [time] => 856565        )    [3] => Array        (            [name] => hdhdjd            [time] => 815465        )    [4] => Array        (            [name] => dr            [time] => 789898        )    [5] => )*/
------解決方案--------------------
有點問題,修改一下:
PHP code
$result = array();$len = count($ar);for ($i = 0; $i < $len - 1; $i ++) {    $result[] = array_shift($ar);    for ($j = 0; $j < count($ar) - 1; $j ++) {        if ($ar[$j]['name'] == $result[count($result) - 1]['name']) {            $item = array_splice($ar, $j, 1);            $result[] = $item[0];            break;        }    }}
------解決方案--------------------
C/C++ code
 "a",                         'time' => '879798'),                array(                         'name' => "a9",                          'time' => '85665565'),                array(                         'name' => "dr",                          'time' => '8154465'),                array(                         'name' => "a",                          'time' => '800000'),                array(                         'name' => "dr",                          'time' => '789898'),);$names = array();$index = array();array_walk($arr, function($val, $key){                        global $names;                        global $index;                        $names[] = $val['name'];                        $index[] = $key;                });array_multisort($names, $index, $arr);print_r($arr);?>
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.