ここでは非常に具体的な問題があります。私は最初に30分の時間間隔、2番目の日付でソートしたい多次元配列を持っています。関数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で配列をプリントアウト、およびデータの順序はランダムに表示されます。これは私が現在使用しているコードです。私は何が欠けていますか?
EDIT: それは結局のところ、順序は完全ランダムです。
echo "<BR>",$a['time']," ",$b['time'];
と私が得たすべては<BR>
年代の50ページだった:私はsortThirties機能に次の行を追加しました。
私は非常に同じアレイ上で実行このコードは私にソートされていないデータを与えるので、アレイが正しく構成されている知っている:
foreach($myArray AS $a)
{
echo "<BR>",$a['date']," ",$a['time'];
}
私は考えることができる唯一のことは、uksortに問題があることが必要です。何かご意見は?
Yeesh ...インターネット上のみんなに、なぜ私はばかだと尋ねたのですか?親切でありがとう。私はなぜ昨日それを理解できなかったのか分かりません。何らかの理由で、私はphpドキュメントの例を見て、キー( "地球"、 "リンゴ"など)を値として見ました。 –
心配する必要はありません。時にはそのようなものを見逃してしまいます。これは、このようなサイトが便利なときです。私が助けることができてうれしいです:)。 – Adi