2017-11-17 1 views
0

Ich habe zwei Arrays, oder so dachte ich. Man übergibt ein Javascript-Objekt über einen POST an php, der andere erhält Daten von einer JS-API, die ein anderes Objekt zurückgibt. Ich möchte diese beiden Arrays verbinden. Hier sind die Beispieldaten und wie sie erhalten werden.Hinzufügen von JSON-Objekt zu PHP-Array

Name des Array, die ich von API erhalten: -

array(5) { [0]=> string(1) "D" [1]=> string(1) "a" [2]=> string(1) "v" [3]=> string(1) "i" [4]=> string(1) "d" } 

Benutzer-Array, das zu meinem PHP-Skript POST'd wird: -

array (
    'userID' => '12345', 
    'time' => 'Monday 26th June 2017 22:12:37 AM', 
) 

Nun verwende ich folgendes (versuchen) und Holen Sie diese beiden Daten in das gleiche Array, um sich in einer Datei einzuloggen.

$nameoriginal = file_get_contents("/api"); 
$namejson = json_decode($name); 

$user = var_export($_POST, true); 

$detailstolog = $namejson + $user; 

file_put_contents('/logs/names.log', $detailstolog); 

Allerdings habe ich ein PHP-Fehlermeldung erhalten, die das erste Argument besagt, ist kein gültiges Array (das heißt $ name ist nicht gültig). Warum ist das? Was kann ich tun, um es zu einem Array zu machen?

Ich denke, der Name 'Array' ist eigentlich eine Zeichenfolge, daher der Fehler. Wie mache ich dies zu einem Array, und ist $ Array1 + $ Array2 der beste Weg, dies zu tun?

Ich versuche, etwas zu schaffen, wie: -

array (
    'name' => 'david', 
    'userID' => '12345', 
    'time' => 'Monday 26th June 2017 22:12:37 AM', 
) 

Vielen Dank für jede Hilfe, die Sie anbieten können!

+0

Warum gibt die API eine Zeichenfolge in ein Array von Zeichen zurück? Sind Sie sicher, dass Sie die API richtig verwenden? – Barmar

Antwort

0

Sorry, aber ich verstehe nicht, wo JSON ist hier beteiligt, Sie haben mit Arrays zu tun, daher keine Notwendigkeit entschlüsseln alles aus JSON.
Das erste Array scheint das Wort "David" in Zeichen zu sein. Dann brauchen Sie nur um es implode und es zu Ihrem detailstolog Array als erstes Element hinzufügen:

$detailstolog['name'] = implode("", $nameoriginal); // David 
$detailstolog += $_POST; 
+0

Er bekommt die Daten mit 'file_get_contents ("/api ")', wo JSON beteiligt ist. – Barmar

+0

Ihr Code verwendet nicht den 'name' Schlüssel für das Element, das hinzugefügt wird. – Barmar

+0

@Barmar, tut mir leid, den Schlüssel zu ignorieren, aktualisiert. Aber er muss immer noch nicht von JSON dekodieren, da er ein "Array" in seinem 'var_dump()' Aufruf bekommt, siehe den ursprünglichen Beitrag. –

0

Kopieren Sie die $_POST Array in eine neue Variable, dann den Namen, um es hinzuzufügen.

$detailstolog = $_POST; 
$name = implode('', $namejson); 
$detailstolog['name'] = $name;