north, east, south 또는 west 값이 포함 된 배열이 있습니다.배열을 usort로 정렬
예를 들어 남쪽, 서쪽 및 북쪽 순서로 값이있는 배열이 있습니다.
이제 north, east, south 및 west와 같은 배열을 정렬하고 싶습니다.
내 예에서 값은 북쪽, 남쪽, 서쪽의 순서 여야합니다.
어떻게하면됩니까?
감사합니다.
north, east, south 또는 west 값이 포함 된 배열이 있습니다.배열을 usort로 정렬
예를 들어 남쪽, 서쪽 및 북쪽 순서로 값이있는 배열이 있습니다.
이제 north, east, south 및 west와 같은 배열을 정렬하고 싶습니다.
내 예에서 값은 북쪽, 남쪽, 서쪽의 순서 여야합니다.
어떻게하면됩니까?
감사합니다.
array_intersect()
을 사용할 수도 있습니다. 첫 번째 배열의 순서를 유지합니다. 올바른 순서로 모든 기본 경로의 배열을 첫 번째 매개 변수로, 배열을 두 번째 매개 변수로 정렬하십시오.
$cardinals = array('north', 'east', 'south', 'west');
$input = array('south', 'west', 'north');
print_r(array_intersect($cardinals, $input));
당신이의 라인을 따라 뭔가를 (나는 그것이 사무엘 로페즈는 코멘트에 제안되어 무엇을 생각) 할 수있는 :
$arr = array ('north', 'west', 'south', 'east',);
function compass_sort ($a, $b)
{
$cmptable = array_flip (array (
'north',
/* you might want to add 'northeast' here*/
'east',
/* and 'southeast' here */
'south',
'west',
));
$v1 = trim (mb_strtolower ($a));
$v2 = trim (mb_strtolower ($b));
if (! isset ($cmptable[$v1])
|| ! isset ($cmptable[$v2]))
{
/* error, no such direction */
}
return $cmptable[$v1] > $cmptable[$v2];
}
usort ($arr, 'compass_sort');
이 그 수에 각 방향 및 종류에 번호를 할당 , north
에는 0이 할당되고, east
은 하나가됩니다 (중간에 무언가를 추가하지 않는 한).
지금까지 수행 한 코드를 추가하십시오. 그것은 배열의 정의 일뿐입니다. 그리고 아마도 당신은 문제가 더 잘 붙어있는 지점을 강조 할 수 있습니다. – hakre
종종 [배열 정렬 기능 비교] (http://www.php.net/manual/en/array.sorting.php)가 매우 유용합니다. – hakre
조금 더 자세하게 설명해 주시겠습니까? 왜 이런 방식으로 정렬 하시겠습니까? 너 뭐하려고? 지금은 왜 내가 포함해야 할 항목을 이미 알고 있기 때문에 원하는 방식으로 정렬 된 배열을 만들지 않는 이유는 알 수 없습니다. –