php) array_multisort: 배열 정렬하기

2020. 5. 13. 19:05PHP

반응형

 

$waiters = array();
$waiters[] = array('seq'=>4, 'weight' => 3541013, 'specialties' => 1);
$waiters[] = array('seq'=>4, 'weight' => "4465300", 'specialties' => 2);
$waiters[] = array('seq'=>"4c", 'weight' => 30700, 'specialties' => 3);
$waiters[] = array('seq'=>4, 'weight' => 264630, 'specialties' => 4);
$waiters[] = array('seq'=>"4w", 'weight' => "86", 'specialties' => 5);
$waiters[] = array('seq'=>"c4", 'weight' => 13, 'specialties' => 6);
$waiters[] = array('seq'=>4, 'weight' => "2", 'specialties' => 6);
$waiters[] = array('seq'=>4, 'weight' => -13, 'specialties' => 6);
$waiters[] = array('seq'=>4, 'weight' => "-2", 'specialties' => 6);
echo json_encode($waiters[0]);  //{"seq":4,"weight":3541013,"specialties":1}
echo '<br><br>';

echo json_encode($waiters);

/*[{"seq":4,"weight":3541013,"specialties":1},{"seq":4,"weight":"4465300","specialties":2},{"seq":"4c","weight":30700,"specialties":3},{"seq":4,"weight":264630,"specialties":4},{"seq":"4w","weight":"86","specialties":5},{"seq":"c4","weight":13,"specialties":6},{"seq":4,"weight":"2","specialties":6},{"seq":4,"weight":-13,"specialties":6},{"seq":4,"weight":"-2","specialties":6}]*/


echo '<br><br>';
$field = 'weight';
$direction = SORT_ASC;
foreach($waiters as $key=>$val){
  $fieldVal = $val[$field];
  $i=0;
  while(in_array($fieldVal, $sort)){
    $fieldVal = $val[$field].$i;
    $i++;
  }
  $sort[$key] = $fieldVal;
}
echo json_encode($sort);

//[3541013,"4465300",30700,264630,"86",13,"2",-13,"-2"]
echo '<br><br>';


array_multisort($sort,SORT_NUMERIC, $direction, $waiters); //숫자정렬일경우
echo json_encode($waiters);

/*[{"seq":4,"weight":-13,"specialties":6},{"seq":4,"weight":"-2","specialties":6},{"seq":4,"weight":"2","specialties":6},{"seq":"c4","weight":13,"specialties":6},{"seq":"4w","weight":"86","specialties":5},{"seq":"4c","weight":30700,"specialties":3},{"seq":4,"weight":264630,"specialties":4},{"seq":4,"weight":3541013,"specialties":1},{"seq":4,"weight":"4465300","specialties":2}]*/

 

array_multisort($sort,$direction, SORT_STRING, $waiters); //문자정렬일경우
echo json_encode($waiters);

/*[{"seq":4,"weight":-13,"specialties":6},{"seq":4,"weight":"-2","specialties":6},{"seq":"c4","weight":13,"specialties":6},{"seq":4,"weight":"2","specialties":6},{"seq":4,"weight":264630,"specialties":4},{"seq":"4c","weight":30700,"specialties":3},{"seq":4,"weight":3541013,"specialties":1},{"seq":4,"weight":"4465300","specialties":2},{"seq":"4w","weight":"86","specialties":5}]*/

반응형