2016-05-04 3 views
0

Ich habe ein Array wie folgt. Es gibt einige Arrays mit demselben Namen. Wie Grant 1, Grant 2 ... und sie haben viele Projekte, die am selben Ort sein sollten. Zum Beispiel: Grant-1 sollte die Information enthält, dass 1. die gleiche Sache Grant gehört, 2. zu gewähren, und so weiterWie kombiniere ich Multi - Arrays mit der gleichen Taste?

array:5 [▼ 
    0 => array:2 [▼ 
    0 => "Grant 1" 
    1 => Project {#423 ▶} 
    ] 
    1 => array:2 [▼ 
    0 => "Grant 1" 
    1 => Project {#421 ▶} 
    ] 
    2 => array:2 [▼ 
    0 => "Grant 2" 
    1 => Project {#412 ▶} 
    ] 
    3 => array:2 [▼ 
    0 => "Grant 1" 
    1 => Project {#424 ▶} 
    ] 
    4 => array:2 [▼ 
    0 => "Grant 2" 
    1 => Project {#419 ▶} 
    ] 
] 

ich sie kombinieren will passieren soll: Bitte

array:5 [▼ 
    0 => array:2 [▼ 
    0 => "Grant 1" 
    1 => Project {#423 ▶} 
    2 => Project {#421 ▶} 
    3 => Project {#424 ▶} 
    ] 
    1 => array:2 [▼ 
    0 => "Grant 1"   
    1 => Project {#412 ▶} 
    2 => Project {#419 ▶} 
    ] 
] 

Hilfe. Danke,

Antwort

0

Ich glaube, Sie foreach verwenden können:

$newArray = []; 
foreach ($array as $value) { 
    $newArray[$value[0]][] = $value[1]; 
} 

Und Sie haben Array wie folgt:

array:5 [▼ 
    "Grant 1" => array:2 [▼ 
    1 => Project {#423 ▶} 
    2 => Project {#421 ▶} 
    3 => Project {#424 ▶} 
    ] 
    "Grant 2" => array:2 [▼ 
    1 => Project {#412 ▶} 
    2 => Project {#419 ▶} 
    ] 
] 

Oder so etwas wie dieses (dank @AbraCadaver):

$newArray = []; 
foreach ($array as $value) { 
    if (isset($newArray[$value[0]] { 
     $newArray[$value[0]][] = $value[1]; 
    } else { 
     $newArray[$value[0]] = $value; 
    } 
} 

Array, was Sie brauchen:

array:5 [▼ 
    0 => array:2 [▼ 
     0 => "Grant 1" 
     1 => Project {#423 ▶} 
     2 => Project {#421 ▶} 
     3 => Project {#424 ▶} 
    ] 
    1 => array:2 [▼ 
     0 => "Grant 1"   
     1 => Project {#412 ▶} 
     2 => Project {#419 ▶} 
    ] 
] 
+0

Vielen Dank Iwan! Du hast mein Leben gerettet @. @ –

+2

Zweite Foreach nicht benötigt: 'foreach ($ Array als $ Wert) { if (isset ($ newArray [$ Wert [0])) { $ newArray [$ Wert [0]] [ ] = $ value [1]; } sonst { $ newArray [$ value [0]] = $ value; } } ' – AbraCadaver

+0

@AbraCadaver ja, es ist gut. Vielen Dank. – Iwan

Verwandte Themen