Ben burada çok özel bir sorun var. Ben ikinci tarihlerine göre, yarım saatlik zaman aralıklarıyla ilk sıralamak istiyorum çok boyutlu bir dizi var. Fonksiyonu array_multisort benim gereksinimlerini karşılamak değildir.
Örnek: Ben istiyorum:
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"));
: Olarak sonuna kadar
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"));
Ben kendi sıralama arama fonksiyonu ile birlikte uksort ile bunu gerçekleştirmek için çalıştık. Bu anda kullanarak kodu:
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);
}
Hemen bu fonksiyonu çalıştırdıktan sonra, I) (print_r ile dizi yazdırmak ve verilerin sırası rasgele olarak görülmektedir. Ne eksik?
EDIT: It turns out, the order is completely random. I added this line to the sortThirties function:
echo "<BR>",$a['time']," ",$b['time'];
ve ben var tüm <BR>
's 50 sayfa oldu.
Ben aynı dizide üzerinde yürütülen bu kod bana düzenlenmemiş veriler verir çünkü dizi düzgün yapılandırılmıştır biliyorum:
foreach($myArray AS $a)
{
echo "<BR>",$a['date']," ",$a['time'];
}
Aklıma tek şey uksort ile ilgili bir sorun olması gerekir. Herhangi bir düşünce?