簡體   English   中英

PHP對多維數組進行排序

[英]PHP Sorting An Multidimensional Array

我是PHP新手,我不確定為什么我的代碼沒有輸出。 我一切准備就緒,沒有錯誤,一切似乎都正確。 我正在嘗試使用print_r()驗證順序時按升序輸出名稱和日期。 我希望能對此問題提供一些指導,因為我不知道我要去哪里錯了。

$win = array('Name'=> 
                        array('Jane Doe ', 'Nash Patel ', 'Joe Public '), 
             'Date'=>
                        array('7 October 2015 ', '14 October 2014 ', '12 October 2016 '));

foreach($win as $element => $namedate) {
    echo '<strong>' . $element . '</strong><br>';
    foreach($namedate as $both) {
       echo $both . '<br/>';
    }
}

foreach($win as $c=>$key) {
        $sort_date[] = $key['Date'];
        $sort_name[] = $key['Name'];
    }

    array_multisort($sort_name, SORT_ASC, $sort_date, SORT_ASC, $win);
    print_r($win);

輸出\\

Array([Date] => Array([0] => 2015年10月7日[1] => 2014年10月14日[2] => 2016年10月12日)[Name] => Array([0] => Jane Doe [1 ] => Nash Patel [2] => Joe Public))

我已經閱讀了文檔,似乎

array_multisort($sort_name, SORT_ASC, $sort_date, SORT_ASC, $win);

表示$ win將按名稱和日期排序,但按名稱排序比日期優先級更高。

嘗試添加更多具有不同日期的Jane Doe ,以查看它們是否按日期排序。

因為您說不需要將數組排序在一起,所以這里介紹了如何將它們拆分並分別排序。

$win = array('Name'=> 
                    array('Jane Doe ', 'Nash Patel ', 'Joe Public '), 
         'Date'=>
                    array('7 October 2015 ', '14 October 2014 ', '12 October 2016 '));


$dates = $win["Date"]; //split array
$names = $win["Name"]; //split array

usort($dates, "date_sort"); // custom sort on dates
asort($names); // sort names

var_dump($dates);
Var_dump($names);


function date_sort($a, $b) {
    return strtotime($a) - strtotime($b);
}

https://3v4l.org/kLjRh

輸出:

array(3) {
  [0]=>
  string(16) "14 October 2014 "
  [1]=>
  string(15) "7 October 2015 "
  [2]=>
  string(16) "12 October 2016 "
}

 array(3) {
  [0]=>
  string(9) "Jane Doe "
  [2]=>
  string(11) "Joe Public "
  [1]=>
  string(11) "Nash Patel "
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM