2016-10-19 2 views
1

Ich bekomme Json Daten von einem API-Endpunkt, ich möchte einen Schlüssel Wert zu einem Array, das ich bekomme. Dies ist meine Funktion:PHP einen Schlüsselwert zu assoziativen Array in foreach Schleife hinzufügen

 $magazines = Magazine::all(); 

     foreach ($magazines as $magazine) { 
      $result = file_get_contents('http://customer.pages.com/?customer=' . $magazine->visio_link_prefix . '&action=latest'); 
      $issues[] = json_decode($result, true); 
     } 

     foreach ($issues as $issue) { 
      Issue::create([ 
       '' 
       'title' => $issue['papers'][0]['title'], 
       'date' => $issue['papers'][0]['date'], 
       'foldername' => $issue['papers'][0]['foldername'], 
       'thumb' => $issue['papers'][0]['thumb'], 
       'thumbmedium' => $issue['papers'][0]['thumbmedium'], 
      ]); 
     } 

Das Array, das ich von dem Endpunkt erhalten wie folgt aussieht:

array:24 [▼ 
    0 => array:1 [▼ 
    "papers" => array:1 [▼ 
     0 => array:11 [▼ 
     "title" => "News- 2014-10-22" 
     "date" => "2014-10-22" 
     "expires" => "" 
     "catalog" => 24 
     "foldername" => "News" 
     "folder" => 4965 
     "pages" => 132 
     "sectionstarts" => "1" 
     "sectioncount" => 1 
     "thumb" => "www.customer.pages.com/news/24/teasers/small.jpg" 
     "thumb_medium" => "www.customer.pages.com/news/24/teasers/medium.jpg" 
     ] 
    ] 
    ] 
    1 => array:1 [▶] 
    2 => array:1 [▶] 
    3 => array:1 [▶] 
    4 => array:1 [▶] 
    5 => array:1 [▶] 
    6 => array:1 [▶] 
    7 => array:1 [▶] 
    8 => array:1 [▶] 
    9 => array:1 [▶] 
    10 => array:1 [▶] 
    11 => array:1 [▶] 
    12 => array:1 [▶] 
    13 => array:1 [▶] 
    14 => array:1 [▶] 
    15 => array:1 [▶] 
    16 => array:1 [▶] 
    17 => array:1 [▶] 
    18 => array:1 [▶] 
    19 => array:1 [▶] 
    20 => array:1 [▶] 
    21 => array:1 [▶] 
    22 => array:1 [▶] 
    23 => array:1 [▶] 
] 

in meiner foreach-Schleife Also, ich möchte ein Schlüsselwertpaar 'magazineId' => $magazine->id zu jeder hinzufügen die obigen 'papers' Arrays. Damit kann ich später $issue['papers'][0]['magazineId'] verwenden, um den Wert $magazine->id zu erhalten. Nicht sicher, wie man das macht?

+0

Bitte bearbeiten Sie den Speicherauszug vom Endpunkt, weil er nicht korrekt ist. Dies ist ein Dump von '$ issues'. Dump des Endpunkts wäre etwa so: Array (Größe = 1) 'Papiere' => Array (Größe = 1) 0 => Array (Größe = 11) 'Titel' => String 'Mama- 2014-10- 22 '(Länge = 17)' Datum '=> Zeichenfolge' 2014-10-22 '(Länge = 10)' läuft ab '=> Zeichenfolge' '(Länge = 0)' Katalog '=> Int 24 ... – krasipenkov

Antwort

2

Diese Korrektur yoiur Code sollte es tun:

foreach ($magazines as $magazine) { 
     $result = file_get_contents('http://customer.pages.com/?customer=' . $magazine->visio_link_prefix . '&action=latest'); 
     $issue = json_decode($result, true); 

     foreach($issue['papers'] as $paperKey => $paper) { 
      $issue['papers'][$paperKey]['magazineId'] = $magazine->id; 
     } 
     $issues[] = $issue; 
    } 

    foreach ($issues as $issue) { 
     Issue::create([ 
      'magazineId' => $issue['papers'][0]['magazineId'], 
      'title' => $issue['papers'][0]['title'], 
      'date' => $issue['papers'][0]['date'], 
      'foldername' => $issue['papers'][0]['foldername'], 
      'thumb' => $issue['papers'][0]['thumb'], 
      'thumbmedium' => $issue['papers'][0]['thumbmedium'], 
     ]); 
    } 

und die zweite Version, wo Sie nur eine magazineId Schlüssel für ein einzelnes Problem haben:

foreach ($magazines as $magazine) { 
    $result = file_get_contents('http://customer.pages.com/?customer=' . $magazine->visio_link_prefix . '&action=latest'); 
    $issue = json_decode($result, true); 
    $issue['magazineId'] = $magazine->id; 
    $issues[] = $issue; 
} 
+0

I get Undefined Index: Papiere für den ersten Teil Ihrer Antwort, und für den zweiten Teil ich Magazin-> ID ist nicht innerhalb der Papiere Array – Marco

+0

Können Sie bitte var_dump von $ issue direkt nach $ issue = json_decode ($ Ergebnis, wahr); – krasipenkov

+0

'array (size = 1) 'Papiere' => array (size = 1) 0 = > array (size = 11) 'Titel' => string 'Mamma- 2014.10.22' (Länge = 17) 'datum' => zeichenfolge '2014-10-22' (länge = 10) 'abläuft' => zeichenfolge '' (länge = 0) 'katalog' => int 24 ... ' – Marco

1

Könnten Sie bitte unten versuchen, Code ? Als erstes habe ich ein Array zu $ ​​issue hinzugefügt.

$magazines = Magazine::all(); 

foreach ($magazines as $magazine) { 
    $result = file_get_contents('http://customer.pages.com/?customer=' . $magazine->visio_link_prefix . '&action=latest'); 
    $issues[] = array('magazine_id' => $magazine->id, 'result' => json_decode($result, true); 
} 

foreach ($issues as $issue) { 
    Issue::create([ 
     'magazine_id' => $issue['magazine_id'], 
     'title' => $issue['result']['papers'][0]['title'], 
     'date' => $issue['result']['papers'][0]['date'], 
     'foldername' => $issue['result']['papers'][0]['foldername'], 
     'thumb' => $issue['result']['papers'][0]['thumb'], 
     'thumbmedium' => $issue['result']['papers'][0]['thumbmedium'], 
    ]); 
} 
+0

Dann bekomme ich diese Art von Array '0 => Array: 2 [▼ " Magazin-ID "=> 6 0 => Array: 1 [▼ " Papiere "=> Array: 1 [▼ 0 => Array : 11 [▼ ... Rest des Arrays ] ] ] 'Ich möchte 'Magazin ID' innerhalb von 'Papiere' Array wenn möglich setzen – Marco

+0

Hi @ Marco; @ krasipenkovs erster Codeblock kann für dich in Ordnung sein. Hast du es versucht? – vural

+0

Ich bekomme Undefined Index: Papiere für diesen Code – Marco

Verwandte Themen