php 배열 sort 질문 드립니다. 채택완료
망고프리
2년 전
조회 2,069
안녕하세요.
내용중에 대괄호가 있으면 sort가 안되네요
$fruits = array("[100] 사과" => 2, "[1] 바나나" => 3, "[200] 딸기" => 1, "[150] 오렌지" => 4);
sort($fruits);
print_r($fruits);
[1] 바나나
[100] 사과
[150] 오렌지
[200] 딸기
이렇게 순서대로 나오게 할수는 없는건가요?
댓글을 작성하려면 로그인이 필요합니다.
답변 3개
채택된 답변
+20 포인트
2년 전
</p>
<pre>
$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);</pre>
<p>
이렇게 해보세요.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 2개
s
swallow
2년 전
�
망고프리
2년 전
안녕하세요. 너무 잘되네요.
감사합니다.
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
2년 전
$fruits = array("[100] 사과" , "[1] 바나나" , "[200] 딸기" , "[150] 오렌지");
sort($fruits);
print_r($fruits);
위 배열이 잘못되었네요
이 내용입니다.
로그인 후 평가할 수 있습니다
답변에 대한 댓글 1개
�
그누위즈
2년 전
[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]
댓글을 작성하려면 로그인이 필요합니다.
2년 전
</p>
<p>$fruits = array("[100] Apples" => 2, "[1] Bananas" => 3, "[200] Strawberries" => 1, "[150] Oranges" => 4);
ksort($fruits);
print_r($fruits);</p>
<p>
로그인 후 평가할 수 있습니다
답변에 대한 댓글 3개
�
망고프리
2년 전
안녕하세요.
실행시키면
Array ( [[100] Apples] => 2 [[150] Oranges] => 4 [[1] Bananas] => 3 [[200] Strawberries] => 1 )
[100] Apples
[1] Bananas
[200] Strawberries
[150] Oranges
이런순으로 나옵니다.
실행시키면
Array ( [[100] Apples] => 2 [[150] Oranges] => 4 [[1] Bananas] => 3 [[200] Strawberries] => 1 )
[100] Apples
[1] Bananas
[200] Strawberries
[150] Oranges
이런순으로 나옵니다.
�
그누위즈
2년 전
[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]
�
망고프리
2년 전
안녕하세요.
배열 내용이 잘못되었네요
아래 내용으로 넣어서 테스트 해보시면 sort가 안되네요.
$fruits = array("[100] Apples", "[1] Bananas", "[200] Strawberries", "[150] Oranges");
배열 내용이 잘못되었네요
아래 내용으로 넣어서 테스트 해보시면 sort가 안되네요.
$fruits = array("[100] Apples", "[1] Bananas", "[200] Strawberries", "[150] Oranges");
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
$fruits = array("[100] 사과" , "[1] 바나나" , "[200] 딸기" , "[150] 오렌지"); 이라면
asort($fruits , SORT_STRING | SORT_FLAG_CASE | SORT_NATURAL);
var_dump($fruits);
아마 잘 될겁니다.