2016-06-23 13 views
0

Ich bin ziemlich neu in PHP und verwende es mit dem Facebook PHP SDK. Im Folgenden versuche ich, die 'Name'-Felder von' admin_creator 'von der Facebook Graph API zu bekommen, aber der Schlüssel ändert sich von Arrays zu Strings.PHP: Wichtige Änderungen von Array zu String

foreach($getAdminCreator as $key){ 
    //var_export($key); 
    if(isset($key['admin_creator'])){ 
     //var_export($key); 
     //var_export($key['admin_creator']); 
     foreach ($key['admin_creator'] as $key){ 
      //var_export($key); 
      //echo $key['name'] . '<br>'; 
     } 
    } 
} 

Die ganze Sache funktioniert und var_export(key) würde ein Array zurück bis zur letzten foreach-Schleife auf. Vor dem letzten foreach-Schleife eintritt, ein Array wie folgt var_export($key['admin_creator']); zurückkehren würde:

array ('name' => 'NAME', 'id' => 'ID',)array ('name' => 'NAME', 'id' => 'ID',) 

jedoch innerhalb der foreach-Schleife, wenn ich versuche, die Werte von ‚name‘ abzurufen, var_export($key); kehrt Strings:

'NAME''ID''NAME''ID' 

und mit echo $key['name'] . '<br>'; würde nur die ersten Zeichen und geben Sie ungültige Zeichenfolge Offset Warnungen.

Da ich PHP neu bin, würde ich gerne wissen, ob es eine Möglichkeit gibt, dies zu beheben und die Werte von 'Name' zu erhalten. Da es als Zeichenfolgen zurückgegeben wird, kann ich die Werte des Felds "Name" nicht exportieren.

* Beachten Sie, dass sich 'name' und 'id' auf die Felder beziehen, während NAME und ID Ersatzwerte für die Werte von 'name' und 'id' sind.

+0

Ich glaube, ich missverstanden, was Sie in meiner früheren Antwort zu tun versuchen. Wenn '$ key ['admin_creator']' nur eine Liste mit einem 'name' und einer' id' ist, sollten Sie nicht mit 'foreach' darüber iterieren müssen. Mach einfach 'if (isset ($ key ['admin_creator'])) {echo $ key ['admin_creator'] ['name']. '
'; } ' –

+0

@MattRaines Es funktioniert jetzt! Vielen Dank für Ihre Hilfe. – Jack

+0

Ich habe es als Antwort geschrieben, damit Sie es akzeptieren können, wenn Sie möchten, um die gelöste Frage zu markieren und uns beide einen kleinen Ruf auf der Website zu gewähren. –

Antwort

0

In PHP können Arrays numerisch indiziert werden und sich wie traditionelle Arrays aus anderen Sprachen verhalten, oder sie können String-Indizes haben und sich mehr wie Listen verhalten. Sie können immer noch über eine Liste mit foreach iterieren, also setzt Ihre innere Schleife zuerst $key auf die Zeichenfolge 'NAME', dann die Zeichenfolge 'ID'.

Um direkt auf die Eigenschaft name der Liste zuzugreifen, können Sie einfach $key['admin_creator']['name'] verwenden. In Ihrem Beispiel können Sie Ihre innere Schleife durch

ersetzen
if (isset($key['admin_creator'])) { 
    echo $key['admin_creator']['name'] . '<br>'; 
}