2014-05-01 2 views
0

게임의 경우 '집'컬렉션이 있고 각 집은 '도시'에 속합니다. 나는이 도시를 기반으로 한이 컬렉션 (배열)을 분리하려고합니다. 그래서 각 도시마다 자체 배열이 있습니다. 콜백을 사용하는 array_split과 같은 내장 배열 함수가 없으므로 어떻게 처리 할 수 ​​있습니까?필드 별 스플릿/그룹 배열 요소

배열의 모든 요소에 대해 반복적으로 생각했지만 매우 느립니다. 집들은 이미 모두 도시 ID로 정렬되어 있으므로 도시 ID가 바뀌는 정확한 위치를 얻으면 몇 가지 분할 기능을 사용할 수 있습니다. 배열의

하우스는 다음과 같이 저장됩니다

array(3) { 
    ["id"]=> string(1) "1", 
    ["name"]=> string(13) "Example House", 
    ["city_id"]=> string(1) "1", 
} 

도시 그들을 대표하는 단지 숫자가 아닌 다른 개체입니다. 그것을 할 수있는 올바른 방법

array(n) { 
    [1]=> array(o) { 
     ["id"]=> string(1) "1", 
     ["name"]=> string(13) "Example House", 
    }, ... 
} 

인가 :

나는 밖으로 뭔가처럼 될 것으로 기대? 내장 함수 나 더 나은 알고리즘이 있습니까?

+4

(_houses 및 city_) 매핑 방법은 무엇입니까? 샘플 배열을 보여줄 수 있습니까? –

+1

배열 형식을 살펴 봄으로써 이해하기가 훨씬 쉬울 것입니다. 코드는 설명이 아니라 연관되어 있습니다. 생각하지 않습니까? –

+0

예, 죄송합니다. 예를 들어'print_r'의 출력을 추가했습니다. – ranisalt

답변

1

그것은 ... 그것을 반복 어쩌면 당신은이처럼 단순화 할 수없이 구조 작업을 꽤 어렵다 ..

$new_arr = array(); 
foreach($arr as $arr1) 
{ 
    $new_arr[$arr1['id']] = array_slice($arr1,1); 
} 
print_r($new_arr); 
이이 배열 함수를 사용하여 달성 할 수 그겁니다

Demonstration

하지만, 에 비해 성능이 좋지 않음 foreach