안녕하세요.
내용중에 대괄호가 있으면 sort가 안되네요
$fruits = array("[100] 사과" => 2, "[1] 바나나" => 3, "[200] 딸기" => 1, "[150] 오렌지" => 4);
sort($fruits);
print_r($fruits);
[1] 바나나
[100] 사과
[150] 오렌지
[200] 딸기
이렇게 순서대로 나오게 할수는 없는건가요?
답변 3개 / 댓글 6개
채택된 답변
+20 포인트
Copy
$array = array("[100] 사과" => 2, "[1] 바나나" => 3, "[200] 딸기" => 1, "[150] 오렌지" => 4);
$keys = array_keys($array);
//sort($keys);
asort($keys, SORT_STRING | SORT_FLAG_CASE | SORT_NATURAL);
$result = array_combine($keys, array_values($array));
var_dump($result);
이렇게 해보세요.
$fruits = array("[100] 사과" , "[1] 바나나" , "[200] 딸기" , "[150] 오렌지");
sort($fruits);
print_r($fruits);
위 배열이 잘못되었네요
이 내용입니다.
답변에 대한 댓글 1개
[code]
$fruits = array("[100] Apples", "[1] Bananas", "[200] Strawberries", "[150] Oranges");
usort($fruits, function($a, $b) {
preg_match('/\[(\d+)\]/', $a, $matchesA);
preg_match('/\[(\d+)\]/', $b, $matchesB);
$numberA = isset($matchesA[1]) ? $matchesA[1] : 0;
$numberB = isset($matchesB[1]) ? $matchesB[1] : 0;
return $numberA - $numberB;
});
print_r2($fruits);
[/code]
$fruits = array("[100] Apples", "[1] Bananas", "[200] Strawberries", "[150] Oranges");
usort($fruits, function($a, $b) {
preg_match('/\[(\d+)\]/', $a, $matchesA);
preg_match('/\[(\d+)\]/', $b, $matchesB);
$numberA = isset($matchesA[1]) ? $matchesA[1] : 0;
$numberB = isset($matchesB[1]) ? $matchesB[1] : 0;
return $numberA - $numberB;
});
print_r2($fruits);
[/code]
Copy
$fruits = array("[100] Apples" => 2, "[1] Bananas" => 3, "[200] Strawberries" => 1, "[150] Oranges" => 4);
ksort($fruits);
print_r($fruits);
답변에 대한 댓글 3개
[code]
$fruits = array("[100] Apples" => 2, "[1] Bananas" => 3, "[200] Strawberries" => 1, "[150] Oranges" => 4);
uksort($fruits, function($a, $b) {
preg_match('/\[(\d+)\]/', $a, $matchesA);
preg_match('/\[(\d+)\]/', $b, $matchesB);
$numberA = isset($matchesA[1]) ? $matchesA[1] : 0;
$numberB = isset($matchesB[1]) ? $matchesB[1] : 0;
return $numberA - $numberB;
});
print_r($fruits);
[/code]
$fruits = array("[100] Apples" => 2, "[1] Bananas" => 3, "[200] Strawberries" => 1, "[150] Oranges" => 4);
uksort($fruits, function($a, $b) {
preg_match('/\[(\d+)\]/', $a, $matchesA);
preg_match('/\[(\d+)\]/', $b, $matchesB);
$numberA = isset($matchesA[1]) ? $matchesA[1] : 0;
$numberB = isset($matchesB[1]) ? $matchesB[1] : 0;
return $numberA - $numberB;
});
print_r($fruits);
[/code]
답변을 작성하려면 로그인이 필요합니다.
$fruits = array("[100] 사과" , "[1] 바나나" , "[200] 딸기" , "[150] 오렌지"); 이라면
asort($fruits , SORT_STRING | SORT_FLAG_CASE | SORT_NATURAL);
var_dump($fruits);
아마 잘 될겁니다.