반응형
PHP : 값의 길이로 배열 정렬?
저는 철자법 기계를 만들었고 긍정적 인 일치 항목이 여러 개 있습니다. 문제는 그것들이 모두 다른 순서로되어 있다는 것입니다. 가장 긴 배열 값이 먼저 나타나도록 배열을 정렬 할 수 있기를 원합니다.
아무도 이것을하는 방법에 대한 아이디어가 있습니까?
http://us2.php.net/manual/en/function.usort.php 사용
이 사용자 정의 기능으로
function sort($a,$b){
return strlen($b)-strlen($a);
}
usort($array,'sort');
이전 인덱스를 유지하려면 uasort를 사용하고, 상관하지 않으면 usort를 사용하십시오.
또한 usort가 불안정한 정렬이기 때문에 내 버전이 더 좋다고 생각합니다.
$array = array("bbbbb", "dog", "cat", "aaa", "aaaa");
// mine
[0] => bbbbb
[1] => aaaa
[2] => aaa
[3] => cat
[4] => dog
// others
[0] => bbbbb
[1] => aaaa
[2] => dog
[3] => aaa
[4] => cat
PHP 5.3 방식으로 수행하고 싶다면 다음과 같이 만들 수 있습니다.
usort($array, function($a, $b) {
return strlen($b) - strlen($a);
});
이렇게하면 글로벌 네임 스페이스를 오염시키지 않습니다.
그러나 DRY를 유지하기 위해 소스 코드의 단일 위치에서 필요한 경우에만이 작업을 수행하십시오.
PHP7이 출시됩니다. PHP7에서는 Spaceship Operator를 사용할 수 있습니다 .
usort($array, function($a, $b) {
return strlen($b) <=> strlen($a);
});
이것이 앞으로 당신을 도울 수 있기를 바랍니다.
function sortByLength($a,$b){
if($a == $b) return 0;
return (strlen($a) > strlen($b) ? -1 : 1);
}
usort($array,'sortByLength');
strlen
oyur 배열 요소 의 배열을 만들고 배열로 만듭니다 multisort
.
foreach($Yourarray as $c=>$key) {
$key['maxlen'] = strlen($key);
$sort_numcie[] = $key['maxlen'];
}
array_multisort($sort_numcie, $Yourarray);
이것은 확실히 작동합니다. 확실 해요!
허용되는 답변 외에도 오름차순 또는 내림차순으로 길이별로 배열을 정렬 하려면 다음을 수행하십시오.
function strlen_compare($a,$b){
if(function_exists('mb_strlen')){
return mb_strlen($b) - mb_strlen($a);
}
else{
return strlen($b) - strlen($a);
}
}
function strlen_array_sort($array,$order='dsc'){
usort($array,'strlen_compare');
if($order=='asc'){
$array=array_reverse($array);
}
return $array;
}
여기 내가 과거에 한 방법이 있습니다.
// Here's the sorting...
$array = array_combine($words, array_map('strlen', $words));
arsort($array);
간단 해.
function LSort(a,b){return a.length-b.length;}
var YourArray=[[1,2,3,4,5,6], ['a','b'], ['X','Y','Z'], ['I','Love','You'], ['good man']];
YourArray.sort(Lsort);
결과:
['good man'] Length=1
['a','b'] Length=3
['X','Y','Z'] Length=3
['I','Love','You'] Length=3
[1,2,3,4,5,6] Length=6
참고 URL : https://stackoverflow.com/questions/838227/php-sort-an-array-by-the-length-of-its-values
반응형
'Programing' 카테고리의 다른 글
FailedPreconditionError : Tensorflow에서 초기화되지 않은 사용 시도 (0) | 2020.12.07 |
---|---|
S3 REST API 및 POST 방법 (0) | 2020.12.06 |
contentOffset을 프로그래밍 방식으로 설정하면 scrollViewDidScroll이 트리거됩니다. (0) | 2020.12.06 |
Google Maps V2-Android-현재 확대 / 축소 수준 얻기 (0) | 2020.12.06 |
Java가 파일을 ArrayList로 읽는 중입니까? (0) | 2020.12.06 |