PHP에서 주어진 키의 값으로 연관 배열 배열을 정렬하는 방법
이 기사에서는 PHP에서 주어진 키의 값으로 연관 배열의 ‘배열’을 정렬하는 방법을 소개합니다.
array_multisort()
함수 사용usort()
함수 사용
array_multisort()
함수를 사용하여 PHP에서 주어진 키 값으로 연관 배열 배열 정렬
내장 함수 array_multisort()
를 사용하여 주어진 키의 값으로 연관 배열의 배열을 정렬 할 수 있습니다. 한 번에 여러 배열을 정렬하거나 다차원 배열을 정렬 할 수 있습니다. 이 함수를 사용하기위한 올바른 구문은 다음과 같습니다.
str_replace($arrayName, $sort_order, $sort_flags);
내장 함수 array_multisort()
에는 세 개의 매개 변수가 있습니다. 매개 변수의 세부 사항은 다음과 같습니다
매개 변수 | 기술 | |
---|---|---|
$arrayName |
필수 | 우리가 분류하고 싶은 ‘배열’입니다. |
$sort_order |
선택 과목 | 배열을 정렬 할 순서를 지정합니다. 오름차순의 경우 SORT_ASC , 내림차순의 경우 SORT_DESC 가 될 수 있습니다. 기본값은 SORT_ASC 입니다. |
$sort_flags |
선택 과목 | 정렬 옵션을 지정합니다. 여기에서 읽을 수 있습니다. |
이 함수는 성공하면 TRUE를 반환합니다. 그렇지 않으면 FALSE를 반환합니다.
아래 프로그램은 array_multisort()
함수를 사용하여 주어진 키의 값으로 연관 배열의 배열을 정렬하는 방법을 보여줍니다.
<?php
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
$marks = array();
foreach ($result as $key => $row)
{
$marks[$key] = $row['marks'];
}
array_multisort($marks, SORT_DESC, $result);
print_r($result);
?>
원래 배열의 마크를 포함하는 배열$marks
를 만들었습니다. 그 후 array_multisort()
함수를 사용하여$result
배열을 기준으로$marks
배열을 정렬했습니다. 출력은 정렬 된$result
배열입니다.
출력:
Array
(
[0] => Array
(
[firstname] => Henry
[marks] => 100
)
[1] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[2] => Array
(
[firstname] => Olivia
[marks] => 85
)
[3] => Array
(
[firstname] => Jacob
[marks] => 60
)
[4] => Array
(
[firstname] => Lili
[marks] => 40
)
[5] => Array
(
[firstname] => Stefan
[marks] => 5
)
)
array
는 표시 키 값에 따라 내림차순으로 정렬됩니다.
usort()
함수를 사용하여 PHP에서 주어진 키 값으로 연관 배열 배열 정렬
PHP에서는 usort()
함수를 사용하여 주어진 값으로 연관 배열의 배열을 정렬 할 수도 있습니다. 키. 이 함수는 사용자 정의 함수를 사용하여 배열을 정렬합니다. 이 함수를 사용하는 올바른 구문은 다음과 같습니다.
preg_replace($arrayName, $functionName);
usort()
함수는 두 개의 매개 변수를받습니다. 매개 변수의 세부 사항은 다음과 같습니다
매개 변수 | 기술 | |
---|---|---|
$arrayName |
필수 | 정렬하고 싶은 ‘배열’입니다. |
$functionName |
필수 | 전달 된 배열을 정렬하는 것은 사용자 정의 함수입니다. |
성공하면 TRUE를, 그렇지 않으면 FALSE를 반환합니다. 배열을 정렬하는 프로그램은 다음과 같습니다.
<?php
function DescSort($item1,$item2)
{
if ($item1['marks'] == $item2['marks']) return 0;
return ($item1['marks'] < $item2['marks']) ? 1 : -1;
}
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'DescSort');
print_r($result);
?>
출력:
Array
(
[0] => Array
(
[firstname] => Henry
[marks] => 100
)
[1] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[2] => Array
(
[firstname] => Olivia
[marks] => 85
)
[3] => Array
(
[firstname] => Jacob
[marks] => 60
)
[4] => Array
(
[firstname] => Lili
[marks] => 40
)
[5] => Array
(
[firstname] => Stefan
[marks] => 5
)
)
오름차순 정렬의 경우 함수는 다음과 같습니다.
<?php
function AscSort($item1,$item2)
{
if ($item1['marks'] == $item2['marks']) return 0;
return ($item1['marks'] > $item2['marks']) ? 1 : -1;
}
$result = array(
array("firstname"=>"Olivia", "marks"=>85),
array("firstname"=>"Jacob", "marks"=>60),
array("firstname"=>"Henry", "marks"=>100),
array("firstname"=>"Lili", "marks"=>40),
array("firstname"=>"Stefan", "marks"=>5),
array("firstname"=>"Bonnie", "marks"=>97),
);
usort($result,'AscSort');
print_r($result);
?>
출력:
Array
(
[0] => Array
(
[firstname] => Stefan
[marks] => 5
)
[1] => Array
(
[firstname] => Lili
[marks] => 40
)
[2] => Array
(
[firstname] => Jacob
[marks] => 60
)
[3] => Array
(
[firstname] => Olivia
[marks] => 85
)
[4] => Array
(
[firstname] => Bonnie
[marks] => 97
)
[5] => Array
(
[firstname] => Henry
[marks] => 100
)
)