<?php
class ToStringMadness {
private $data;
public function __construct($data) {
$this->data = $data;
}
public function __toString() {
$data = array_map(function($item) { return $item; }, $this->data);
sort($data);
$rs = implode('-', $data);
echo $rs."\n";
return $rs;
}
}
$a = [
new ToStringMadness(['c','b']),
new ToStringMadness(['c','b','a']),
new ToStringMadness(['a','b']),
];
sort($a);
/*
usort($a, function(array $itemA, array $itemB) {
sort($itemA);
sort($itemB);
$itemA = implode('-', $itemA);
$itemB = implode('-', $itemB);
echo $itemA.' vs '.$itemB."\n";
return strcmp($itemA, $itemB);
});
*/
print_r($a);
- Output for 5.5.0 - 5.5.38, 5.6.0 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.20, 7.2.0 - 7.2.33, 7.3.16 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.6
- Array
(
[0] => ToStringMadness Object
(
[data:ToStringMadness:private] => Array
(
[0] => a
[1] => b
)
)
[1] => ToStringMadness Object
(
[data:ToStringMadness:private] => Array
(
[0] => c
[1] => b
)
)
[2] => ToStringMadness Object
(
[data:ToStringMadness:private] => Array
(
[0] => c
[1] => b
[2] => a
)
)
)
preferences:
187.4 ms | 405 KiB | 225 Q