2012-11-01 3 views
1

알파벳의 첫 글자로 나뉘어 진 미국 대학의 다른 배열을 포함하는 배열이 있습니다. print_r을 사용하여 배열을 볼 수 있도록 테스트 페이지를 설정했습니다. 해당 페이지는 다음과 같습니다 그 배열을 생성하기 위해하나의 큰 배열에서 다른 범위 배열 만들기

http://apps.richardmethod.com/Prehealth/Newpublic/test.php

, 나는 다음과 같은 코드를 사용 : 이제

$alphabetized = array(); 

    foreach (range('A', 'Z') as $letter) { 

      // create new array based on letter 
      $alphabetized[$letter] = array(); 

      // loop through results and add to array 
      foreach ($users as $user) { 
        $firstletter = substr($user->Schoolname, 0, 1); 

        if ($letter == $firstletter) { 
         array_unshift($alphabetized[$letter], $user); 
        } 
      } 
    } 

을, 나는 문자의 특정 범위에 있도록 배열을 분할 할 각 배열. 예를 들어,

arrayABCEFGH - 내가 그렇게 위의 코드를 수정해야

내 질문은 문자 A, B, C, D, E, F, G, 및 H.로 시작하는 학교를 포함 할 것 하나의 큰 배열을 만들기 전에이 작업을 수행해야합니까, 아니면 나중에해야합니까?

여기 큰 질문이 있습니다. . 그렇다면 어떻게? :-)

미리 도움을 청하십시오. 크게 감사드립니다.

답변

0

모든 첫 번째 글자가 실제로 사용되고 A - H에서 제공되는 전체 배열에서 ksort()을 사용했습니다. 그렇지 않으면 array_intersect_key()과 쿼리 할 문자의 뒤집어 진 범위를 사용해야합니다.

array_intersect_key($alphabetized, array_flip(range('A', 'H'))); 
+0

감사합니다. 그랬어. 정말 감사. –

0

배열과 그 배열에서 추출 할 키 배열을 취하는 간단한 함수를 작성하고 해당 키와 해당 값만 포함하는 배열을 반환 할 수 있습니다. 숫자가 아닌 키 array_slice의 종류 :

function values_at($array, $keys) { 
    return array_intersect_key($array, array_flip($keys)); 
} 

는 다음과 같이 호출 할 수 있습니다 당신은 당신의 알파벳 순 목록에서 원하는 것을 얻을 수 있습니다 :

$arrayABCDEFGH = values_at($alphabetized, range('A','H')); 
0

당신이 전체를 필요로하지 않는 경우 배열의 복사본을 만든다면 위의 코드를 배열을 인수로 갖는 함수 ($ letterRange)에 캡슐화해야합니다.이 배열은 특정 배열 식별자 (문자)를 최종 배열에 포함합니다.

그럼 당신은 경우 블록을 사용하여 foreach는 내 코드를 캡슐화해야합니다 :이 배열은 $ letterRange에서 지정된 문자에 해당하는 문자 배열을 포함 초래

if (in_array($letter, $letterRange)) { ... }

.

array_slice($alphabetized, 0, 8); 

있다고 가정 :

$alphabetized = array(); 

// loop through results and add to array 
foreach ($users as $user) { 
    $firstletter = strtoupper($user->Schoolname[0]); 

    $alphabetized[$firstletter][] = $user; 
} 
// sort by first letter (optional) 
ksort($alphabetized); 

처음 8 개 항목을 검색하려면 array_slice가 사용할 수 있습니다 : 먼저, 배열을 생성하는 코드는 $users 이상 iteratating에 의해 쉽게 만들 수 있습니다 오프

관련 문제