2014-06-22 9 views
1

array_multisort 함수가 작동하는 배열이 성공적으로 작동 한 이전 배열보다 큰 경우에만 이상한 시나리오가 나타납니다.array_multisort가 inconsistlyly false를 반환합니다.

데이터의 하위 세트를 추출한 다음 하위 세트를 정렬하고 출력합니다. array_multisort는 10 개의 항목이있는 첫 번째 하위 집합에서 작동합니다. 그런 다음 엔트리가 10 개 미만이지만 네 개의 하위 집합에 성공한 다음 세 개의 하위 집합에서 실패합니다. 하위 집합의 엔트리는 16 개입니다. 그런 다음 18 개의 항목이있는 하위 집합에서 성공하지만 모두 18 개 미만의 항목이있는 다음 6 개의 하위 집합에서는 실패합니다. 이 항목은 항목 수가 마지막으로 성공한 정렬보다 큰 경우에만 성공합니다.

내가 도움이 될만한 결과를 출력 한 후에 두 배열에 unset 명령을 추가했습니다.

 for($k=0; $k<$num_category_skaters; $k++) 
      { 
       $skater_sort[$k][FirstName] = $category_skaters[$k][FirstName]; 
       $skater_sort[$k][LastName] = $category_skaters[$k][LastName]; 
       $skater_sort[$k][Gender] = $category_skaters[$k][Gender]; 
       $skater_sort[$k][PartnerFirstName] = $category_skaters[$k][PartnerFirstName]; 
       $skater_sort[$k][PartnerLastName] = $category_skaters[$k][PartnerLastName]; 
      } 

//print_r($skater_sort); 

    // Obtain a list of columns 
     foreach ($skater_sort as $key => $row) 
      { 
      $FirstName[$key] = $row['FirstName']; 
      $LastName[$key] = $row['LastName']; 
      $PartnerFirstName[$key] = $row['PartnerFirstName']; 
      $PartnerLastName[$key] = $row['PartnerLastName']; 
      $BirthDate[$key] = $row['BirthDate']; 
      $Gender[$key] = $row['Gender']; 
      // now sort the columns 
      } 
      $error=array_multisort($LastName, SORT_ASC, $FirstName, SORT_ASC, $PartnerFirstName, SORT_ASC, $PartnerLastName, SORT_ASC, $Gender, SORT_ASC, $skater_sort); 

모든 안내는 감사하겠습니다. 감사합니다.

답변

0

글쎄, 문제를 해결했지만 실제로 그 원인을 알지 못합니다. array_multisort 명령 다음에 오는 코드는 for 루프를 사용하여 배열을 통과하여 배열 데이터를 화면에 표시합니다. 이 코드를 가져 와서 함수로 옮기고 함수를 호출하면 array_multisort가 정상적으로 작동합니다. 디스플레이 코드가 멀티 포트를 따르고 있었으므로 적어도이 문제는 해결 되었기 때문에 이것은 나에게 이해가되지 않습니다.