usort($childs, function($a, $b) {
return $a['parent_id'] - $b['parent_id'];
});
Here I'm sorting it by 1 field, how can I add more fields to sort them?, Like if it was the ORDER BY field1, field2, field3
in Mysql
usort($childs, function($a, $b) {
return $a['parent_id'] - $b['parent_id'];
});
Here I'm sorting it by 1 field, how can I add more fields to sort them?, Like if it was the ORDER BY field1, field2, field3
in Mysql
usort($childs, function($a, $b) {
if ($a['field1'] == $b['field1']) {
if ($a['field2'] == $b['field2']) {
return $a['field3'] < $b['field3'] ? -1 : 1;
} else {
return 0;
}
return $a['field2'] < $b['field2'] ? -1 : 1;
}
return $a['field1'] < $b['field1'] ? -1 : 1;
});
EDIT
a slightly more generic solution (untested)
$sorts = array('field1' => 'asc', 'field2' => 'asc', 'field3' => 'asc');
usort($childs, function($a, $b) use (array $sorts = array()) {
foreach($sorts as $field => $direction) {
if ($a[$field] != $b[$field]) {
if ($direction == 'asc') {
return $a[$field] < $b[$field] ? -1 : 1;
}
return $a[$field] < $b[$field] ? 1 : -1;
}
}
return 0;
});