I have below array
Array
(
[0] => Array
(
[ft_name] => workout
[days] => 2
)
[1] => Array
(
[ft_name] => restday
[days] =>
)
[2] => Array
(
[ft_name] => df
[days] => 3
)
[3] => Array
(
[ft_name] => df
[days] => 1
)
[4] => Array
(
[ft_name] => restday
[days] =>
)
[5] => Array
(
[ft_name] => ss
[days] => 6
)
[6] => Array
(
[ft_name] => reday
[days] => 5
)
)
I want it in this format like the position of array having ft_name=>"restday"
should be remain same and the rest are should be sorted in order by days
field
I have tried with this code but result is not expected.
<?php
$size = count($val);
for($i=0;$i< $size;$i++){
if($val[$i]['days']){
for ($j=0; $j<$size-$i; $j++) {
if(!$val[$j+1]['days']) continue;
if ($val[$j+1]['days'] < $val[$j]['days']) {
swap($val, $j, $j+1);
}
}
}
else{
continue;
}
}
echo "<pre>"; print_r($val);
function swap(&$arr, $a, $b) {
$tmp = $arr[$a];
$arr[$a] = $arr[$b];
$arr[$b] = $tmp;
}
?>
Output should be looks like this one
Array
(
[0] => Array
(
[ft_name] => df
[days] => 1
)
[1] => Array
(
[ft_name] => restday
[days] =>
)
[2] => Array
(
[ft_name] => workout
[days] => 2
)
[3] => Array
(
[ft_name] => df
[days] => 4
)
[4] => Array
(
[ft_name] => restday
[days] =>
)
[5] => Array
(
[ft_name] => reday
[days] => 5
)
[6] => Array
(
[ft_name] => ss
[days] => 6
)
)
Thanks in advance.