usort PHP 个不正确的结果
usort in PHP incorrect results
我有一个游戏时间列表,所以说 1:05PM、2:05PM、7:10PM、10:15PM 等。我使用的是多维数组和 strcmp
和 usort
以从早到晚的正确顺序对这些游戏进行排序。
正在对游戏进行排序,但是任何在晚上 10 点开始的游戏都会排在其他任何游戏之前。所以我目前的排序是这样的:
Dodgers 7/29/16 10:05 PM
Angels 7/29/16 10:10 PM
A's 7/29/16 10:15 PM
Cubs 7/29/16 2:20 PM
Jays 7/29/16 7:05PM
Rays 7/29/16 7:15PM
Astros 7/29/16 8:05 PM
等
几天来我一直在解决这个问题。我尝试使用 strtotime()
转换我的日期字符串,但 usort 根本不喜欢这样,我的排序变得随机。我尝试使用连字符而不是斜线来格式化 date/time,但没有任何变化。我还有 'scrubbed' 我的 date/time 字符串用于任何额外的字符。这是我的代码:
$array[$timedate] = $string;
// Multidimensional array of 'games'
$games[] = array('date' => $timedate,
'title' => $string);
// compare the dates and times
function cmp($a, $b)
{
return strcmp($a['date'], $b['date']);
}
// Sort the array
usort($games, "cmp");
usort 想定义用户自定义的比较函数。你不需要那个。在 strtotime() 上使用经典排序。
或者你可以使用ksort,你在下面提到的方法。这是有效的代码:
$game_times = array(array("Dodgers", "7/29/16 10:05 PM"),
array("Angels", "7/29/16 10:10 PM"),
array("A's", "7/29/16 10:15 PM"),
array("Cubs", "7/29/16 2:20 PM"),
array("Jays", "7/29/16 7:05PM"),
array("Rays", "7/29/16 7:15PM"),
array("Astros", "7/29/16 8:05 PM"));
foreach ($game_times as $item)
{
$games[strtotime($item[1])] = array('date' => $item[1],
'title' => $item[0]);
}
ksort($games);
var_dump($games);
// Multidimensional array of 'games'
$games[] = array('date' => $timedate,
'title' => $string);
// Sort the array
ksort($games);
我有一个游戏时间列表,所以说 1:05PM、2:05PM、7:10PM、10:15PM 等。我使用的是多维数组和 strcmp
和 usort
以从早到晚的正确顺序对这些游戏进行排序。
正在对游戏进行排序,但是任何在晚上 10 点开始的游戏都会排在其他任何游戏之前。所以我目前的排序是这样的:
Dodgers 7/29/16 10:05 PM
Angels 7/29/16 10:10 PM
A's 7/29/16 10:15 PM
Cubs 7/29/16 2:20 PM
Jays 7/29/16 7:05PM
Rays 7/29/16 7:15PM
Astros 7/29/16 8:05 PM
等
几天来我一直在解决这个问题。我尝试使用 strtotime()
转换我的日期字符串,但 usort 根本不喜欢这样,我的排序变得随机。我尝试使用连字符而不是斜线来格式化 date/time,但没有任何变化。我还有 'scrubbed' 我的 date/time 字符串用于任何额外的字符。这是我的代码:
$array[$timedate] = $string;
// Multidimensional array of 'games'
$games[] = array('date' => $timedate,
'title' => $string);
// compare the dates and times
function cmp($a, $b)
{
return strcmp($a['date'], $b['date']);
}
// Sort the array
usort($games, "cmp");
usort 想定义用户自定义的比较函数。你不需要那个。在 strtotime() 上使用经典排序。
或者你可以使用ksort,你在下面提到的方法。这是有效的代码:
$game_times = array(array("Dodgers", "7/29/16 10:05 PM"),
array("Angels", "7/29/16 10:10 PM"),
array("A's", "7/29/16 10:15 PM"),
array("Cubs", "7/29/16 2:20 PM"),
array("Jays", "7/29/16 7:05PM"),
array("Rays", "7/29/16 7:15PM"),
array("Astros", "7/29/16 8:05 PM"));
foreach ($game_times as $item)
{
$games[strtotime($item[1])] = array('date' => $item[1],
'title' => $item[0]);
}
ksort($games);
var_dump($games);
// Multidimensional array of 'games'
$games[] = array('date' => $timedate,
'title' => $string);
// Sort the array
ksort($games);