I want to order my associative rows by their column value as sequences of ascending values.
Sample array1:
$args = [
'a' => ['zebra' => 1],
'b' => ['zebra' => 0],
'c' => ['zebra' => 0],
'd' => ['zebra' => 0],
'e' => ['zebra' => 1],
];
Desired result:
[
'b' => ['zebra' => 0],
'a' => ['zebra' => 1],
'c' => ['zebra' => 0],
'e' => ['zebra' => 1],
'd' => ['zebra' => 0],
]
Notice that duplicate values are not consecutive while sorting ascending. Instead, all unique, first-encountered values come first, then second encountered values, etc.
Sample array2:
$args = [
'a' => ['zebra' => 1],
'b' => ['zebra' => 1],
'c' => ['zebra' => 1],
'd' => ['zebra' => 1],
'e' => ['zebra' => 0],
'f' => ['zebra' => 0],
];
Desired result:
[
'e' => ['zebra' => 0],
'a' => ['zebra' => 1],
'f' => ['zebra' => 0],
'b' => ['zebra' => 1],
'c' => ['zebra' => 1],
'd' => ['zebra' => 1],
]
Edit: I tried to do this with usort, via this similar, but different, question, and the answer was no, so I am looking for a programatic solution (without usort).
Same idea to split the input into the 1's and 0's, then output a 0 and a 1 as long as there is something left to output. As each time you output a value, the array is reduced, this just continues till both lists are empty so should cope with unbalanced lists...