2013-07-05 3 views
0

누군가 나를 도울 수 있는지 궁금합니다. 나는 그 결과가 있어야한다 등PHP로 간단한 배열 그룹화하기

Array 
(
    [World Duty Free Group] => Airport Retailer 
    [Duty Free Americas Inc] => Airport Retailer 
    [DFASS Distribution] => Airport Retailer 
    [Monalisa Int'l SA] => Downtown Retailer 
    [DUFRY America 1] => Seaport Retailer 
    [Neutral Duty Free Shop] => Border Retailer 
    [Saint Honoré] => 
    [SMT PR Duty Free Inc] => Seaport Retailer 
    [Aer Rianta International] => Airport Retailer 
    [London Supply] => Downtown Retailer 
    [Royal Shop Duty Free] => Downtown Retailer 
    [Harding Brothers Retail] => Cruise/Ferry Retailers 
    [Motta Internacional SA] => Airport Retailer 
    [Tortuga Rum Co Ltd] => Downtown Retailer 
    [Pama Duty Free] => Seaport Retailer 
    [Little Switzerland] => Downtown Retailer 
.... 
) 

내가 '공항 소매', '항구 소매'에 의해 그룹에 필요한 배열을 가지고 전체를 반복하여이 작업을 수행 할 수

Array 
(
    [Airport Retailer] => World Duty Free Group 
    [Airport Retailer] => Duty Free Americas Inc 
    [Airport Retailer] => DFASS Distribution 
... 
) 
+5

중복 키가있는 배열을 가질 수 없으므로 다른 구조로 정착해야합니다. –

+1

또는 구조체가 'Array ([Airport Retailer] => Array (면세 그룹, Duty Free American INC, DFASS Distrubution)'와 같은 각 유형의 배열을 만들 수 있습니다. – Fallen

+1

원래 배열을 그런 식으로 구축하십시오. –

답변

1

한 가지 방법은 당신의 결과 및 동일한 키에 대한 값을 추가하십시오. 여기에 (키가이 경우의 값) 일부 더미 코드입니다 : 당신이 배열의 키를 반복하는 것처럼

$data = array(); 
foreach ((array)$results as $item => $key) { 
    $data[$key][] = $item; 
} 
2
function testFunc($array) 
{ 
    $result = array(); 
    foreach($array as $_index => $_value) 
    { 
     $result[$_value][] = $_index; 
    } 
    return $result; 
} 
1

당신은 정확히 그런 식으로 그것을 할 수 없습니다 (예에서 당신 당신이 "[공항 소매를]"라는 이름의 N 키를했을 넣어

을하지만, 원하는 항목을 그룹화 배열을 만들 수 있습니다.

$arr= array(); 
foreach ($initialArray as $key => $item) { 
    if ($item=="[Airport Retailer]") $arr[] = $key; 
} 
1
function processArray($arr) { 
    $result = Array(); 

    foreach($arr as $key => $val) { 
    if($val === "Airport Retailer") { 
     $result[] = $key; 
    } 
    } 

    return $result; 
} 

당신은 canno을 따라서 중복 키가 있으므로 '그냥'목록입니다. 이 발생합니다 설정하여 예를 들어

Array(
    [0] => World Duty Free Group 
    [1] => Duty Free Americas Inc 
    [2] => DFASS Distribution 
... 
) 
0

지금까지와 같은 동일한 키에 여러 값을 삽입하기를 원한다면 내가 다차원 배열을 사용하십시오 :

Array(
    [Airport Retailer] => array (World Duty Free Group, 
           Duty Free Americas Inc, 
           DFASS Distribution), 
    [foo] => x, 
    [bar] => array(y,w,z) 
) 

을 솔직히 도움이 되길 바랄뿐입니다.