배열의 키 값 쌍을 비교하여 다음 키 값 쌍을 비교하여 더 낮은 값을 찾습니다. 설정을 취소하고 앞으로 나아가 야합니다. 그러나 정확성을 얻지 못하고 있습니다. 여기서 잘못하고있는 것이 무엇입니까? 제안하십시오. 코드가 있습니다. 이것은 비교되고 평가 될 배열입니다. 상기 어레이에서 배열을 탐색하고 현재 키 값 쌍을 다음 하나의 PHP와 비교하십시오
Array
(
[0] => Array
(
[com_details] => Array
(
[spid] => 6
)
[distance] => 13.1 mi
)
[1] => Array
(
[com_details] => Array
(
[spid] => 6
)
[distance] => 66.2 mi
)
[2] => Array
(
[com_details] => Array
(
[spid] => 6
)
[distance] => 1.5 mi
)
[3] => Array
(
[com_details] => Array
(
[spid] => 7
)
[distance] => 188 mi
)
[4] => Array
(
[com_details] => Array
(
[spid] => 7
)
[distance] => 96.7 mi
)
[5] => Array
(
[com_details] => Array
(
[spid] => 7
)
[distance] => 3.1 mi
)
[6] => Array
(
[com_details] => Array
(
[spid] => 14
)
[distance] => 1.8 mi
)
[7] => Array
(
[com_details] => Array
(
[spid] => 14
)
[distance] => 228 mi
)
[8] => Array
(
[com_details] => Array
(
[spid] => 14
)
[distance] => 82.2 mi
)
)
난 그 SPID 동일하며 다음 또는 이전 거리는 다음 다른 하나가 설정되며 다음 iteration.But 위해 전진 적 으면 거리가 다른 것과
com_details
비교해야 이 종말점에 실패했습니다.
$l=0;
do{
$length = count($dispatch_locations1);
if($length >= $l+1){
if($dispatch_locations1[$l]['com_details']['spid'] == @$dispatch_locations1[$l+1]['com_details']['spid']){
if($dispatch_locations1[$l]['distance'] > $dispatch_locations1[$l+1]['distance']){
unset($dispatch_locations1[$l]);
$l--;
$dispatch_locations1 = array_values($dispatch_locations1);
} else if($dispatch_locations1[$l]['distance'] < $dispatch_locations1[$l+1]['distance']){
unset($dispatch_locations1[$l+1]);
$l--;
$dispatch_locations1 = array_values($dispatch_locations1);
} else if($dispatch_locations1[$l]['distance'] == $dispatch_locations1[$l+1]['distance']){
unset($dispatch_locations1[$l+1]);
$l--;
$dispatch_locations1 = array_values($dispatch_locations1);
}
}
}
$l++;
} while ($l <= count($dispatch_locations1)+1);
}
전체 반복이 다소 틀린이 배열을 얻은 후에.
Array
(
[0] => Array
(
[com_details] => Array
(
[spid] => 6
)
[distance] => 1.5 mi
)
[1] => Array
(
[com_details] => Array
(
[spid] => 7
)
[distance] => 188 mi
)
[2] => Array
(
[com_details] => Array
(
[spid] => 14
)
[distance] => 1.8 mi
)
)
이 결과에서 두 번째 배열 거리는 188로 잘못 반환됩니다.
여기에서 잘못된 것을 제안하십시오.
I 생는 여기에 사용되는 샘플 ARRAY nk 당신이 문자열을 비교하려고하는 대신에 수레를 비교할 필요가 있습니다. 배열에 부동 소수점 키를 입력하거나 거리를 변환하려고 시도하십시오 – KoKo
또한 do 대신에 usort를 사용할 수 있습니다. http://php.net /manual/en/function.usort.php – KoKo
ok는 시도 할 것입니다. u는 usort를 구현하는 방법을 제안 할 수 있습니다. –