2016-07-09 6 views
-3

i mit API, und es mir einige Daten in meiner url in json zurück:Ich erhalte Illegal String Offset-Fehler 'requestId'

dies tatsächliche URL Daten:

data={%22requestId%22%3A%22546b384ce51f469a2e8b4567%22%2C%22numbers%22%3A{%22917566559950%22%3A{%22date%22%3A%222014-11-18+17%3A45%3A59%22%2C%22status%22%3A1%2C%22desc%22%3A%22DELIVERED%22}}} 

meine PHP Code ist für Einsatz Daten in Datenbank aber immer Fehler:

$request = $_REQUEST["data"]; 
$jsonData = json_decode($request,true); 
$link = mysqli_connect("127.0.0.1", "root", "", "table"); 
foreach($jsonData as $key => $value) 
{ 
    $requestID = $value['requestId'] ; 
    $userId = $value['userId']; 
    $senderId = $value['senderId']; 
    foreach($value['report'] as $key1 => $value1) 
     { 
    //detail description of report 
    $desc = $value1['desc']; 
    // status of each number 
    $status = $value1['status']; 
    // destination number 
    $receiver = $value1['number']; 
    //delivery report time 
    $date = $value1['date']; 
    $query = "INSERT Query for store record "; 
    mysqli_query($link, $query); 
} 
} 

was Problem ist hier Fehler Warning: Illegal String aus set 'requestId' in Zeile 11 Warning: Illegal String Offset 'userId' ..... bitte es lösen ....

Antwort

1

TLDR;

You should remove the foreach($jsonData as ...) around your code. 

Sie sind auf dieser assoziatives Array foreaching mit ihm Schlüssel ist:

{ 
"requestId":"546b384ce51f469a2e8b4567", 
"numbers":{ 
    "917566559950":{ 
    "date":"2014-11-18 17:45:59", 
    "status":1, 
    "desc":"DELIVERED" 
    } 
} 
} 

Die erste Iteration der Schlüssel wird "requestId" und der Wert Feld "546b384ce51f469a2e8b4567" sein. In der zweiten Runde hast du "Nummern" und das Array darüber.

$requestID = $jsonData['requestId']; 
var_dump($requestID); // the requestID 


// foreaching in the assoc array inside the 'numbers' 
foreach ($jsonData["numbers"] as $key => $value) { 
    // description 
    $desc = $value['desc']; 
    // status of each number 
    $status = $value['status']; 
    // date 
    $date = $value['date'];  

    var_dump($key); // the key with 917... 
} 
+0

Lassen Sie mich hinzufügen: 1) Es wäre hilfreich für Sie sein und potenziellen Befragten auf Ihre Frage, wenn Sie Ihre URL-codierte JSON decodiert. 2) Die Fehlermeldung, die Sie bekommen, sagt Ihnen, dass Sie versuchen, 'requestID' als Index in eine Zeichenfolge zu verwenden. Daher muss $ value eine Zeichenfolge sein. Das wäre Ihr Stichwort, um zu überprüfen, welchen Wert $ value hatte und warum. –

Verwandte Themen