$arr[1]['name']='a'; $arr[1]['chinese']=5; $arr[2]['name']='b'; $arr[2]['chinese']=56; $arr[3]['name']='c'; $arr[3]['chinese']=1; usort($arr, function($a, $b) { $al = strlen($a['chinese']); $bl = strlen($b['chinese']); if ($al == $bl) return 0; return ($al > $bl) ? -1 : 1; }); var_dump($arr);