Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PHP Sort Multidimensional array by value which has NULL using uasort

i have created an arry like

$arr[0]['ref']=5;
$arr[0]['name']='name0';

$arr[1]['ref']=6;
$arr[1]['name']='name1';

$arr[2]['ref']=4;
$arr[2]['name']='name2';

$arr[3]['ref']='';
$arr[3]['name']='name3';

$arr[4]['ref']='9';
$arr[4]['name']='name4';

$arr[5]['ref']=''
$arr[5]['name']='name5'

I want to sort this array like using ref value

$arr[2]['ref']=4;
$arr[2]['name']='name2';

$arr[0]['ref']=5;
$arr[0]['name']='name0';

$arr[1]['ref']=6;
$arr[1]['name']='name1';

$arr[4]['ref']='9';
$arr[4]['name']='name4';

$arr[3]['ref']='';
$arr[3]['name']='name3';

$arr[5]['ref']=''
$arr[5]['name']='name5'

i tried

uasort($arr, function($a, $b){
    return $a['ref'] - $b['ref'];
});

But '' values are coming at the beginning. How can I push '' down.

Thanks in advance. I am beginner. please excuse me if i am asking very simple question

like image 656
user231410 Avatar asked Sep 25 '26 06:09

user231410


1 Answers

This will do the job:

uasort($arr, function($a, $b){
    if ($a['ref'] == "") return 1;
    if ($b['ref'] == "") return -1;
    return $a['ref'] - $b['ref'];
});
like image 54
Mumpo Avatar answered Sep 26 '26 19:09

Mumpo