2010-04-15 3 views
4

배열 이름과 기타 세부 정보가 알파벳 순으로 배열되어 있습니다. 각 배열에는 이름과 관련된 첫 번째 문자가 포함됩니다.PHP는 하나의 필드 값을 기반으로 그룹으로 배열을 분할합니다.

Array 
(
    [0] => Array 
     (
      [0] => a 
      [1] => Alanis Morissette 
     ) 

    [1] => Array 
     (
      [0] => a 
      [1] => Alesha Dixon 
     ) 
    [2] => Array 
     (
      [0] => a 
      [1] => Alexandra Burke 
     ) 

    [3] => Array 
     (
      [0] => b 
      [1] => Britney Spears 
     ) 

    [4] => Array 
     (
      [0] => b 
      [1] => Bryan Adams 
     ) 
) 
내가 예를 들어, 그들이 첫 번째 초기에 의해 분류 표시 할

:

A 
- 
Alanis Morissette 
Alesha Dixon 
Alexandra Burke 

B 
- 
Britney Spears 
Bryan Adams 

etc...

이 가능한 모든 있습니까?

답변

12

당신은 그들이 분류되지 않은 경우에도 쉽게 그룹화 할 수 있습니다 배열 때문에

$names = array(
    'Alanis Morissette', 
    'Alesha Dixon', 
    'Alexandra Burke', 
    'Britney Spears', 
    'Bryan Adams', 
    ... 
); 

$groups=array(); 
foreach ($names as $name) { 
    $groups[$name[0]][] = $name; 
} 
+2

난 당신이) (SUBSTR 쉽게 첫 글자를 얻을 수 추가 할 더 보편적 – phpJs

6

:

$groups=array(); 
foreach ($names as $name) { 
    $groups[$name[0]][] = $name[1]; 
} 

심지어 그룹 그들에게 처음 초기를 저장 할 필요가 없습니다 이미 정렬 된 경우, 표시된 마지막 문자를 반복하여 추적 할 수 있습니다. 그것이 바뀌면 다음 편지를 받는다는 것을 알게됩니다.

$lastChar = ''; 
foreach($singers as $s) { 
    if ($s[0] != $lastChar) echo "\n".$s[0]."\n - \n"; 
    echo $s[1]."\n"; 
    $lastChar = $s[0]; 
} 
+0

생각을 보인다. 배열 구조에 대한 다른 이유가없는 한, 이름이 많은 정규 배열은 수행중인 작업에 대해 쉽게 작동합니다. 제 생각으로 다차원 배열이 당신을 혼란스럽게하는 경우, 아마도 당신이 그것을 어떻게 조합 할 것인지 다시 생각할 필요가있을 것입니다. –

+0

@Syntax Error : 또는 zombat처럼 배열 대괄호 (http://php.net/manual/en/language.types.string.php#language.types.string.substr)를 사용할 수 있습니다. – outis

+0

죄송합니다. 나는 그것을 놓쳤습니다. Derp. –

관련 문제