<?php
$hits = [
['date' => new \DateTime('2019-01-02 12:00:00'), 'roundIndex' => 1],
['date' => new \DateTime('2019-01-02 12:00:00'), 'roundIndex' => 4],
['date' => new \DateTime('2019-01-02 12:00:00'), 'roundIndex' => 2],
['date' => new \DateTime('2019-01-02 12:00:00'), 'roundIndex' => 1],
['date' => new \DateTime('2019-01-01 12:00:00'), 'roundIndex' => 1],
['date' => new \DateTime('2019-01-04 12:00:00'), 'roundIndex' => 4],
['date' => new \DateTime('2019-01-02 12:00:00'), 'roundIndex' => 2],
['date' => new \DateTime('2019-01-23 12:00:00'), 'roundIndex' => 1],
['date' => new \DateTime('2019-01-22 12:00:00'), 'roundIndex' => 6],
['date' => new \DateTime('2019-01-01 12:00:00'), 'roundIndex' => 3],
['date' => new \DateTime('2019-01-06 12:00:00'), 'roundIndex' => 2],
['date' => new \DateTime('2019-01-28 12:00:00'), 'roundIndex' => 7],
['date' => new \DateTime('2019-01-26 12:00:00'), 'roundIndex' => 3],
['date' => new \DateTime('2019-01-27 12:00:00'), 'roundIndex' => 5],
['date' => new \DateTime('2019-01-26 12:00:00'), 'roundIndex' => 2],
['date' => new \DateTime('2019-01-11 12:00:00'), 'roundIndex' => 4],
['date' => new \DateTime('2019-01-24 12:00:00'), 'roundIndex' => 3],
['date' => new \DateTime('2019-01-08 12:00:00'), 'roundIndex' => 7],
['date' => new \DateTime('2019-01-11 12:00:00'), 'roundIndex' => 8],
['date' => new \DateTime('2019-01-14 12:00:00'), 'roundIndex' => 6],
['date' => new \DateTime('2019-01-13 12:00:00'), 'roundIndex' => 4],
['date' => new \DateTime('2019-01-13 12:00:00'), 'roundIndex' => 5],
['date' => new \DateTime('2019-01-24 12:00:00'), 'roundIndex' => 2],
['date' => new \DateTime('2019-01-27 12:00:00'), 'roundIndex' => 4],
];
return $item1['date'] < $item2['date'] ? -1 : 1;
});
// so far it works
// now this screws up
usort($hits, function($a,$b) use ($defaults) { if (
$a['date']->format('Y-m-d H:i:s') === $b['date']->format('Y-m-d H:i:s'))
{
if ($a['roundIndex'] > $b['roundIndex'])
{
return 1;
}
else
{
return -1;
}
}
return 1;
});
/* if you remove the sort() above and uncomment this manual sort, it will ALL work fine, but I dont know why....
$sizeOfHits = sizeof($hits);
for($i = 0; $i < $sizeOfHits; $i++)
{
for($j = $i+1; $j < $sizeOfHits; $j++)
{
if (
$hits[$i]['date']->format('Y-m-d H:i:s') === $hits[$j]['date']->format('Y-m-d H:i:s'))
{
if ($hits[$i]['roundIndex'] > $hits[$j]['roundIndex'])
{
$x = $hits[$j];
$hits[$j] = $hits[$i];
$hits[$i] = $x;
}
}
}
}*/
foreach($hits as $hit) { echo $hit['date']->format('Y-m-d H:i:s').' '.$hit['roundIndex']."\r\n"; }
PD9waHAKJGhpdHMgPSBbCiAgICBbJ2RhdGUnID0+IG5ldyBcRGF0ZVRpbWUoJzIwMTktMDEtMDIgMTI6MDA6MDAnKSwgJ3JvdW5kSW5kZXgnID0+IDFdLAogICAgWydkYXRlJyA9PiBuZXcgXERhdGVUaW1lKCcyMDE5LTAxLTAyIDEyOjAwOjAwJyksICdyb3VuZEluZGV4JyA9PiA0XSwKICAgIFsnZGF0ZScgPT4gbmV3IFxEYXRlVGltZSgnMjAxOS0wMS0wMiAxMjowMDowMCcpLCAncm91bmRJbmRleCcgPT4gMl0sCiAgICBbJ2RhdGUnID0+IG5ldyBcRGF0ZVRpbWUoJzIwMTktMDEtMDIgMTI6MDA6MDAnKSwgJ3JvdW5kSW5kZXgnID0+IDFdLAogICAgWydkYXRlJyA9PiBuZXcgXERhdGVUaW1lKCcyMDE5LTAxLTAxIDEyOjAwOjAwJyksICdyb3VuZEluZGV4JyA9PiAxXSwKICAgIFsnZGF0ZScgPT4gbmV3IFxEYXRlVGltZSgnMjAxOS0wMS0wNCAxMjowMDowMCcpLCAncm91bmRJbmRleCcgPT4gNF0sCiAgICBbJ2RhdGUnID0+IG5ldyBcRGF0ZVRpbWUoJzIwMTktMDEtMDIgMTI6MDA6MDAnKSwgJ3JvdW5kSW5kZXgnID0+IDJdLAogICAgWydkYXRlJyA9PiBuZXcgXERhdGVUaW1lKCcyMDE5LTAxLTIzIDEyOjAwOjAwJyksICdyb3VuZEluZGV4JyA9PiAxXSwKICAgIFsnZGF0ZScgPT4gbmV3IFxEYXRlVGltZSgnMjAxOS0wMS0yMiAxMjowMDowMCcpLCAncm91bmRJbmRleCcgPT4gNl0sCiAgICBbJ2RhdGUnID0+IG5ldyBcRGF0ZVRpbWUoJzIwMTktMDEtMDEgMTI6MDA6MDAnKSwgJ3JvdW5kSW5kZXgnID0+IDNdLAogICAgWydkYXRlJyA9PiBuZXcgXERhdGVUaW1lKCcyMDE5LTAxLTA2IDEyOjAwOjAwJyksICdyb3VuZEluZGV4JyA9PiAyXSwKICAgIFsnZGF0ZScgPT4gbmV3IFxEYXRlVGltZSgnMjAxOS0wMS0yOCAxMjowMDowMCcpLCAncm91bmRJbmRleCcgPT4gN10sCiAgICBbJ2RhdGUnID0+IG5ldyBcRGF0ZVRpbWUoJzIwMTktMDEtMjYgMTI6MDA6MDAnKSwgJ3JvdW5kSW5kZXgnID0+IDNdLAogICAgWydkYXRlJyA9PiBuZXcgXERhdGVUaW1lKCcyMDE5LTAxLTI3IDEyOjAwOjAwJyksICdyb3VuZEluZGV4JyA9PiA1XSwKICAgIFsnZGF0ZScgPT4gbmV3IFxEYXRlVGltZSgnMjAxOS0wMS0yNiAxMjowMDowMCcpLCAncm91bmRJbmRleCcgPT4gMl0sCiAgICBbJ2RhdGUnID0+IG5ldyBcRGF0ZVRpbWUoJzIwMTktMDEtMTEgMTI6MDA6MDAnKSwgJ3JvdW5kSW5kZXgnID0+IDRdLAogICAgWydkYXRlJyA9PiBuZXcgXERhdGVUaW1lKCcyMDE5LTAxLTI0IDEyOjAwOjAwJyksICdyb3VuZEluZGV4JyA9PiAzXSwKICAgIFsnZGF0ZScgPT4gbmV3IFxEYXRlVGltZSgnMjAxOS0wMS0wOCAxMjowMDowMCcpLCAncm91bmRJbmRleCcgPT4gN10sCiAgICBbJ2RhdGUnID0+IG5ldyBcRGF0ZVRpbWUoJzIwMTktMDEtMTEgMTI6MDA6MDAnKSwgJ3JvdW5kSW5kZXgnID0+IDhdLAogICAgWydkYXRlJyA9PiBuZXcgXERhdGVUaW1lKCcyMDE5LTAxLTE0IDEyOjAwOjAwJyksICdyb3VuZEluZGV4JyA9PiA2XSwKICAgIFsnZGF0ZScgPT4gbmV3IFxEYXRlVGltZSgnMjAxOS0wMS0xMyAxMjowMDowMCcpLCAncm91bmRJbmRleCcgPT4gNF0sCiAgICBbJ2RhdGUnID0+IG5ldyBcRGF0ZVRpbWUoJzIwMTktMDEtMTMgMTI6MDA6MDAnKSwgJ3JvdW5kSW5kZXgnID0+IDVdLAogICAgWydkYXRlJyA9PiBuZXcgXERhdGVUaW1lKCcyMDE5LTAxLTI0IDEyOjAwOjAwJyksICdyb3VuZEluZGV4JyA9PiAyXSwKICAgIFsnZGF0ZScgPT4gbmV3IFxEYXRlVGltZSgnMjAxOS0wMS0yNyAxMjowMDowMCcpLCAncm91bmRJbmRleCcgPT4gNF0sCl07CnVzb3J0KCRoaXRzLCBzdGF0aWMgZnVuY3Rpb24oYXJyYXkgJGl0ZW0xLCBhcnJheSAkaXRlbTIpIHsKICAgIHJldHVybiAkaXRlbTFbJ2RhdGUnXSA8ICRpdGVtMlsnZGF0ZSddID8gLTEgOiAxOwp9KTsKCi8vIHNvIGZhciBpdCB3b3JrcwoKCi8vIG5vdyB0aGlzIHNjcmV3cyB1cAp1c29ydCgkaGl0cywgZnVuY3Rpb24oJGEsJGIpIHVzZSAoJGRlZmF1bHRzKSB7CiAgICBpZiAoCiAgICAgICAgJGFbJ2RhdGUnXS0+Zm9ybWF0KCdZLW0tZCBIOmk6cycpID09PSAkYlsnZGF0ZSddLT5mb3JtYXQoJ1ktbS1kIEg6aTpzJykpCiAgICB7CiAgICAgICAgaWYgKCRhWydyb3VuZEluZGV4J10gPiAkYlsncm91bmRJbmRleCddKQogICAgICAgIHsKICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgfQogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gMTsKfSk7CgovKiBpZiB5b3UgcmVtb3ZlIHRoZSBzb3J0KCkgYWJvdmUgYW5kIHVuY29tbWVudCB0aGlzIG1hbnVhbCBzb3J0LCBpdCB3aWxsIEFMTCB3b3JrIGZpbmUsIGJ1dCBJIGRvbnQga25vdyB3aHkuLi4uCiRzaXplT2ZIaXRzID0gc2l6ZW9mKCRoaXRzKTsKZm9yKCRpID0gMDsgJGkgPCAkc2l6ZU9mSGl0czsgJGkrKykKewogICAgZm9yKCRqID0gJGkrMTsgJGogPCAkc2l6ZU9mSGl0czsgJGorKykKICAgIHsKICAgICAgICBpZiAoCiAgICAgICAgICAgICRoaXRzWyRpXVsnZGF0ZSddLT5mb3JtYXQoJ1ktbS1kIEg6aTpzJykgPT09ICRoaXRzWyRqXVsnZGF0ZSddLT5mb3JtYXQoJ1ktbS1kIEg6aTpzJykpCiAgICAgICAgewogICAgICAgICAgICBpZiAoJGhpdHNbJGldWydyb3VuZEluZGV4J10gPiAkaGl0c1skal1bJ3JvdW5kSW5kZXgnXSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgJHggPSAkaGl0c1skal07CiAgICAgICAgICAgICAgICAkaGl0c1skal0gPSAkaGl0c1skaV07CiAgICAgICAgICAgICAgICAkaGl0c1skaV0gPSAkeDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KfSovCgpmb3JlYWNoKCRoaXRzIGFzICRoaXQpIHsgZWNobyAkaGl0WydkYXRlJ10tPmZvcm1hdCgnWS1tLWQgSDppOnMnKS4nICcuJGhpdFsncm91bmRJbmRleCddLiJcclxuIjsgfQ==