php 배열 sort 질문 드립니다. 채택완료
안녕하세요.
내용중에 대괄호가 있으면 sort가 안되네요
$fruits = array("[100] 사과" => 2, "[1] 바나나" => 3, "[200] 딸기" => 1, "[150] 오렌지" => 4); sort($fruits); print_r($fruits);
[1] 바나나
[100] 사과
[150] 오렌지
[200] 딸기
이렇게 순서대로 나오게 할수는 없는건가요?
댓글을 작성하려면 로그인이 필요합니다.
답변 3개
채택된 답변
+20 포인트
swallow
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년 전
$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);
아마 잘 될겁니다.