Emm*_*myS 8 php arrays sorting time
我有一个非关联数组,其中输入的数据没有排序(我从外部系统接收数据,并且不能强制它按排序顺序进入数组.)有没有办法对值进行排序?我试过这个:
$wedTrackTimes = array("9:30 AM-10:30 AM", "8:15 AM-9:15 AM", "12:30 PM-1:30 PM", "2:00 PM-3:00 PM", "3:30 PM-4:30 PM");
$wedTrackTimes = array_unique($wedTrackTimes);
$wedTrackTimes = sort($wedTrackTimes);
print_r($wedTrackTimes);
Run Code Online (Sandbox Code Playgroud)
但它没有返回一个排序的数组,而是返回1.我假设它是因为它是非关联的,所以没有键.有没有办法按值排序数组?我们确实需要在上午8:15时段之后的上午9:30时段,应该这样.
UPDATE
感谢大家的答案; 确实使数组排序,但不如预期.如果我使用默认排序类型,我得到这个:
Array
(
[0] => 12:30 PM-1:30 PM
[1] => 2:00 PM-3:00 PM
[2] => 3:30 PM-4:30 PM
[3] => 8:15 AM-9:15 AM
[4] => 9:30 AM-10:30 AM
)
Run Code Online (Sandbox Code Playgroud)
使用SORT_NUMERIC我得到这个:
Array
(
[0] => 2:00 PM-3:00 PM
[1] => 3:30 PM-4:30 PM
[2] => 8:15 AM-9:15 AM
[3] => 9:30 AM-10:30 AM
[4] => 12:30 PM-1:30 PM
)
Run Code Online (Sandbox Code Playgroud)
使用SORT_STRING我得到这个:
Array
(
[0] => 12:30 PM-1:30 PM
[1] => 2:00 PM-3:00 PM
[2] => 3:30 PM-4:30 PM
[3] => 8:15 AM-9:15 AM
[4] => 9:30 AM-10:30 AM
)
Run Code Online (Sandbox Code Playgroud)
我需要的是:
Array
(
[0] => 8:15 AM-9:15 AM
[1] => 9:30 AM-10:30 AM
[2] => 12:30 PM-1:30 PM
[3] => 2:00 PM-3:00 PM
[4] => 3:30 PM-4:30 PM
)
Run Code Online (Sandbox Code Playgroud)
这可能吗?
cwa*_*ole 21
按引用排序(这意味着它会对传递给它的任何内容进行排序),它会根据失败返回true/false.你在这做什么:
$wedTrackTimes = sort($wedTrackTimes);
Run Code Online (Sandbox Code Playgroud)
将值$ wedTrackTimes赋值为TRUE或FALSE.
尝试
sort($wedTrackTimes);
print_r($wedTrackTimes);
Run Code Online (Sandbox Code Playgroud)
sort像所有php的排序功能一样,就地排序.如果排序成功则返回true,否则返回false.如果您只对字符串/数字进行排序,则此结果无关紧要.
$wedTrackTimes = array("9:30 AM-10:30 AM", "8:15 AM-9:15 AM",
"12:30 PM-1:30 PM", "2:00 PM-3:00 PM", "3:30 PM-4:30 PM");
$wedTrackTimes = array_unique($wedTrackTimes);
sort($wedTrackTimes);
print_r($wedTrackTimes);
Run Code Online (Sandbox Code Playgroud)
是要走的路.
所以,看起来你正在寻找比标准排序更先进的东西.
// WARNING: THIS IS *NOT* BY REFERENCE. IT RETURNS A NEW ARRAY.
function getSortedTimes(array $group)
{
$tmp = array();
foreach( $group as $times )
{
// Basically, I am pairing the string for the start time with
// a numeric value.
$tmp[$times] = strtotime(substr($times, 0, strpos($times, '-')));
}
// asort is like sort, but it keeps the pairings just created.
asort($tmp);
// the keys of $tmp now refer to your original times.
return array_keys($tmp);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14885 次 |
| 最近记录: |