[英]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);
}
輸出:
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.