php - Sort a multidimensional associative array with respect to a key -


this question has answer here:

hi have array following:

$originalarray = [     'furniture/fixture' => [         [             'ledgerid' => '557af7adc3acc3ac2b8b4567',             'groupname' => 'furniture/fixture',             'weightage' => 29,             'ledgername' => 'furniture & fixture',         ],         [             'ledgerid' => '558ffa02c3acc331258b4567',             'groupname' => 'furniture/fixture',             'weightage' => 28,             'ledgername' => 'water coolers,referigerator',         ],     ],     'building' => [         [             'ledgerid' => '5586c5eec3acc3f42c8b4567',             'groupname' => 'building',             'weightage' => 26,             'ledgername' => 'main building',         ],         [             'ledgerid' => '5586c85cc3acc38e2e8b4567',             'groupname' => 'building',             'weightage' => 22,             'ledgername' => 'jr.school building',         ],     ],     'vehicle' => [         [             'ledgerid' => '55898004c3acc38b758b4567',             'groupname' => 'vehicle',             'weightage' => 37,             'ledgername' => 'school bus',         ],         [             'ledgerid' => '55898078c3acc3c5758b4567',             'groupname' => 'vehicle',             'weightage' => 27,             'ledgername' => 'staff car - tata mobile',         ],     ],     'plant & machinery' => [         [             'ledgerid' => '557af81fc3acc3ed2b8b4567',             'groupname' => 'plant & machinery',             'weightage' => 18,             'ledgername' => 'tools carpentres',         ],         [             'ledgerid' => '557afff7c3acc38d2e8b4567',             'groupname' => 'plant & machinery',             'weightage' => 29,             'ledgername' => 'water heating equipment',         ],         [             'ledgerid' => '557b004dc3acc3bf2e8b4567',             'groupname' => 'plant & machinery',             'weightage' => 28,             'ledgername' => 'mess cold room',         ],     ], ]; 

i want sort each associative array, furniture/fixture , buildings, using key inside each array weightage. how can solve it, output looks this?

array ([building] => array     (         [0] => array             (                 [ledgerid] => 5586c5eec3acc3f42c8b4567                 [groupname] => building                 [weightage] => 26                 [ledgername] => main building             )          [1] => array             (                 [ledgerid] => 5586c85cc3acc38e2e8b4567                 [groupname] => building                 [weightage] => 26                 [ledgername] => jr.school building             )     ) [vehicle] => array     (         [0] => array             (                 [ledgerid] => 55898004c3acc38b758b4567                 [groupname] => vehicle                 [weightage] => 27                 [ledgername] => school bus             )          [1] => array             (                 [ledgerid] => 55898078c3acc3c5758b4567                 [groupname] => vehicle                 [weightage] => 27                 [ledgername] => staff car - tata mobile             )                  ) [plant & machinery] => array     (         [0] => array             (                 [ledgerid] => 557af81fc3acc3ed2b8b4567                 [groupname] => plant & machinery                 [weightage] => 28                 [ledgername] => tools carpentres             )          [1] => array             (                 [ledgerid] => 557afff7c3acc38d2e8b4567                 [groupname] => plant & machinery                 [weightage] => 28                 [ledgername] => water heating equipment             )       ) [furniture/fixture] => array     (         [0] => array             (                 [ledgerid] => 557af7adc3acc3ac2b8b4567                 [groupname] => furniture/fixture                 [weightage] => 29                 [ledgername] => furniture & fixture             )          [1] => array             (                 [ledgerid] => 558ffa02c3acc331258b4567                 [groupname] => furniture/fixture                 [weightage] => 29                 [ledgername] => water coolers,referigerator             )        )      ) 

thanks in advance.

you use usort function, passing callback, this:

function compare($array1, $array2) {      $a = $array1['weightage'];     $b = $array2['weightage'];      if ($a < $b) {         return -1;     }     elseif($b < $a) {         return 1;     }      return 0; }  $result = usort($originalarray, "compare"); 

Comments