2013-07-05 5 views
0

Интересно, может ли кто-нибудь помочь мне. У меня есть массив, который мне нужно группе «Аэропорт Retailer», «Морской порт Retailer» и т.д.Группировка простого массива с 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 (World Duty Free Group, 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 ключей с именем "[Аэропорт Retailer]"

Тем не менее, вы можете создать массив группируя элементы, которые вы хотите:.

$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 t имеют повторяющиеся ключи, поэтому это «просто» список.

Для примера установить это приведет к

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) 
) 

Я искренне надеюсь, что это поможет, я бы сделал это так.

Смежные вопросы