-3

Below array need to sort by planning_no field

Array
        (
            [0] => stdClass Object
                (
                    [planning_no] => 100-3
                    [pieces] => 0
                )

            [1] => stdClass Object
                (
                    [planning_no] => 100
                    [pieces] => 0
                )

            [2] => stdClass Object
                (
                    [planning_no] => 100-2
                    [pieces] => 0
                )

            [3] => stdClass Object
                (
                    [planning_no] => 100
                    [pieces] => 148
                )

            [4] => stdClass Object
                (
                    [planning_no] => 102
                    [pieces] => 0
                )
            [5] => stdClass Object
                (
                    [planning_no] => 100-1
                    [pieces] => 0
                )
        )

I want array in below format

Array
        (
            [0] => stdClass Object
                (
                    [planning_no] => 100
                    [pieces] => 0
                )

            [1] => stdClass Object
                (
                    [planning_no] => 100
                    [pieces] => 148
                )

            [2] => stdClass Object
                (
                    [planning_no] => 100-1
                    [pieces] => 0
                )

            [3] => stdClass Object
                (
                    [planning_no] => 100-2
                    [pieces] => 0
                )

            [4] => stdClass Object
                (
                    [planning_no] => 100-3
                    [pieces] => 0
                )
            [5] => stdClass Object
                (
                    [planning_no] => 102
                    [pieces] => 0
                )
        )
Uttam Panara
  • 541
  • 2
  • 10
  • 28

1 Answers1

1

Use php array_multisort() function.

See it live here

Working Code:

<?php
$values = array();
$a = new stdClass();
$a->planning_no = '100-3';
$a->pieces = '0';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '100';
$a->pieces = '0';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '100-2';
$a->pieces = '0';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '100';
$a->pieces = '148';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '102';
$a->pieces = '0';
$values[] = $a;
$a = new stdClass();
$a->planning_no = '100-1';
$a->pieces = '0';
$values[] = $a;
$n = array();
if (! empty($values)) {
 foreach ($values as $value) {
  $planning_no = str_replace('-', '.', $value->planning_no);
  $n[] = array('planning_no' => $planning_no, 'pieces' => $value->pieces);
 }
}
array_multisort($n);
$final = array();
if (! empty($n)) {
 foreach ($n as $elem) {
  $planning_no = str_replace('.', '-', $elem['planning_no']);
  $a = new stdClass();
  $a->planning_no = $planning_no;
  $a->pieces = $elem['pieces'];
  $final[] = $a;
 }
}
echo '<pre>';print_r($final);echo '</pre>';
?>

Output:

Array
(
    [0] => stdClass Object
        (
            [planning_no] => 100
            [pieces] => 0
        )

    [1] => stdClass Object
        (
            [planning_no] => 100
            [pieces] => 148
        )

    [2] => stdClass Object
        (
            [planning_no] => 100-1
            [pieces] => 0
        )

    [3] => stdClass Object
        (
            [planning_no] => 100-2
            [pieces] => 0
        )

    [4] => stdClass Object
        (
            [planning_no] => 100-3
            [pieces] => 0
        )

    [5] => stdClass Object
        (
            [planning_no] => 102
            [pieces] => 0
        )

)
Pupil
  • 23,834
  • 6
  • 44
  • 66