여기에 아주 구체적인 문제가 있습니다. 나는 다차원 배열을 갖고 있는데, 첫 번째는 30 분 간격으로, 두 번째는 날짜별로 정렬하고 싶다. 함수 array_multisort은 내 요구 사항을 충족하지 않습니다.PHP : 30 분 간격으로 배열 정렬
예 : 내가 원하는 : 나는 내 자신의 정렬 콜백 함수와 함께 uksort으로 이러한 목표를 달성하기 위해 노력했습니다
array(array("time"=>"11:30",
"date"=>"2009-03-24"),
array("time"=>"12:10",
"date"=>"2009-03-23"),
array("time"=>"12:00",
"date"=>"2009-03-24"),
array("time"=>"12:15",
"date"=>"2009-03-24"));
:
array(array("time"=>"12:15",
"date"=>"2009-03-24"),
array("time"=>"12:10",
"date"=>"2009-03-23"),
array("time"=>"12:00",
"date"=>"2009-03-24"),
array("time"=>"11:30",
"date"=>"2009-03-24"));
는 다음과 같이 결국. 이것은 내가 현재 사용하고있는 코드입니다 :
uksort($myArray, "sortThirties");
function sortThirties($a, $b)
{
//Get the two times as timestamps relative to today
$one = strtotime($a['time']);
$two = strtotime($b['time']);
//Round them down to the nearest half-hour time
$one = $one - ($one % 1800);
$two = $two - ($two % 1800);
//Return the difference if times are unequal
//If times are equal, return the difference between dates.
return ($one == $two ? strcmp($a['date'],$b['date']) : $one - $two);
}
즉시이 기능을 실행 한 후, 나는 인 print_r (와 배열을 인쇄), 데이터의 순서는 무작위로 나타납니다. 내가 뭘 놓치고 있니?
편집 : 그것은 순서 임의완전히입니다 밝혀졌습니다. 나는 sortThirties 함수에이 줄을 추가 :
echo "<BR>",$a['time']," ",$b['time'];
을 내가 가진 모든 <BR>
년대의 50 페이지이었다.
나는 바로 그 배열에서 실행이 코드는 나에게 정렬되지 않은 데이터를 제공하기 때문에 배열이 올바르게 구성되어 알고 : 내가 생각할 수있는
foreach($myArray AS $a)
{
echo "<BR>",$a['date']," ",$a['time'];
}
유일한 것은 uksort에 문제가있을 수 있어야합니다. 이견있는 사람?
Yeesh ... 인터넷에있는 모든 사람들에게 왜 내가 바보인지 물어 보았습니까? 친절 해줘서 고마워. 어제 그 이유를 알 수없는 이유를 모르겠습니다. 웬일인지, 나는 PHP 문서의 예를 보았고 값 ("지구", "사과"등)을 값으로 보았다. –
걱정하지 마십시오. 때로는 이와 비슷한 것을 놓치기도합니다.이 사이트가 유용 할 때가 있습니다. 내가 도울 수있어서 기쁩니다 :). – Adi