2016-04-20 8 views
0

Ich habe dieses Array mit Informationen, mit denen ich ein neues assoziatives Array erstellen möchte. Jeder Schlüssel im assoziativen Array sollte der "Name" des alten sein. Und in jedem neuen Schlüssel möchte ich, dass die entsprechenden Informationen gesammelt werden.Erstelle assoziatives Array mit Wert als Schlüssel

Array 
(
    [0] => Array 
     (
      [id] => 1 
      [counter] => 21478813 
      [serie] => 2607171234 
      [name] => Ben 
     ) 
    [1] => Array 
     (
      [id] => 2 
      [counter] => 21478858 
      [serie] => 2607177151 
      [name] => Evan 
     ) 
    [2] => Array 
     (
      [id] => 3 
      [counter] => 21478817 
      [serie] => 2607171341 
      [name] => Steve 
     ) 
    [3] => Array 
     (
      [id] => 4 
      [counter] => 21471798 
      [serie] => 2607178561 
      [name] => Ben 
     ) 
    [4] => Array 
     (
      [id] => 5 
      [counter] => 21478811 
      [serie] => 2607171347 
      [name] => Ben 
     ) 
) 

Dies ist das Array Ich versuche zu erstellen:

ein neues Array
Array 
(
    ["Ben"] => Array 
     (
      [0] => Array 
       (
        [id] => 1 
        [counter] => 21478813 
        [serie] => 2607171234 
        [name] => Ben 
       ) 
      [1] => Array 
       (
        [id] => 4 
        [counter] => 21471798 
        [serie] => 2607178561 
        [name] => Ben 
       ) 
      [2] => Array 
       (
        [id] => 5 
        [counter] => 21478811 
        [serie] => 2607171347 
        [name] => Ben 
       ) 
     ) 
    ["Evan"] => Array 
     (
      [0] => Array 
       (
        [id] => 2 
        [counter] => 21478858 
        [serie] => 2607177151 
        [name] => Evan 
       ) 
     ) 
    ["Steve"] => Array 
     (
      [0] => Array 
       (
        [id] => 3 
        [counter] => 21478817 
        [serie] => 2607171341 
        [name] => Steve 
       ) 
     ) 
) 
+0

zeigen uns, wie Sie versuchen, sind ? –

+0

Bitte posten Sie, was Sie versucht haben, um das Problem zu lösen, und welche Schwierigkeiten Sie damit hatten. – Kateract

Antwort

0
$newArr = array(); 

foreach($myArr as $value) { 
    $name = $value['name']; 
    if (isset($newArr[$name])) { 
     $newArr[$name][] = $value; 
    } 
    else { 
     $newArr[$name] = array($value); 
    } 
} 
+0

Genau das wollte ich, vielen Dank für Ihre Hilfe! Und ich werde sicherstellen, dass ich meinen versuchten Code das nächste Mal einreiche. – Kalle

0

Verwenden Sie eine foreach Schleife zu erstellen:

$newArr = []; 

foreach($myArr as $key => $value){ 
    $newArr[$myArr[$key][$value['name']]][] = $myArr[$key]; 
} 
+0

Sie können die Zeile in der 'foreach' wie folgt vereinfachen: '$ newArr [$ myArr [$ i] ['name']] [] = $ v;' –

+0

Ihre Lösung erzeugt mehrere E_NOTICE: Typ 8 - Undefinierter Index : Nachrichten, als ich es versuchte. –

+0

@DavidAman Sie haben meinen Code dann nicht benutzt, ich rufe keine Indexnachrichten an. – Daan

Verwandte Themen