I json Array PHP und legen Sie mehrere Zeilen in der TabelleKann nicht in der Lage json Array in PHP zugreifen, es gibt null zurück und Warning: Invalid argument für foreach geliefert()
Problem zu senden versuche:
PHP:
- nicht fähig, die Dekodierungs JSON Array zuzugreifen - Array nIL zurück
- Warnung zählen: Invalid argument für foreach geliefert()
Wenn ich JSON-String drucken es gibt mir die folgenden Daten
[
{
"email" : "",
"Name" : "Ddd",
"contact2" : "",
"ontact1" : ""
},
{
"email" : "",
"Name" : "Ddd",
"contact2" : "",
"contact1" : ""
},
{
"email" : "",
"Name" : "Dddddr",
"contact2" : "",
"contact1" : ""
}
]
Aber wenn ich versuche, dass mit PHP zugreifen, die mir einen Fehler
PHP-Code zeigt:
<?php
$inputJSON = file_get_contents('php://input');
$array = json_decode($inputJSON, true);
echo count($array);
foreach($array as $item) {
$uses = $item['Name'];
echo $uses;
}
?>
Fehler:
Warning: Invalid argument supplied for foreach()
Also habe ich das Array in PHP getestet verwenden,
Isarray() || Isobject funtion but it print null
Count() funcions provide 0
var_dump($array); result NULL
Aber ich dekodieren das Array und das Ergebnis in iOS, gibt es das Array als Reaktion
echo json_encode($array);
Aber in php Ich bin nicht in der Lage Greife auf das Array zu.
Nicht sicher, ob es einen Fehler im iOS-Code gibt. In iOS habe ich NSMutableDictionary
, die zu NSMutableArray
und dann NSArray
gespeichert wird. Wenn ich die NSMutableArray
analysieren, bekomme ich das gleiche Problem.
iOS Code:
func saveToCloud(){
var mutablearray = NSMutableArray()
var dict = NSMutableDictionary()
var eachRow = textfieldarry as [UITextField]
for eachField in eachRow {
let index = eachRow.indexOf(eachField)
let data = eachField.text!.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceCharacterSet())
dict[keys[index!]] = data
}
mutablearray.addObject(dict)
var TonNSarray = NSArray(array: mutablearray)
var url = "myurl/file.php "
JsonParseTOSaveCloud(TonNSarray, urlstring: url, successfullResponse: "Success", alertmessage: "not")
}
zum Server Speicher:
func ok_JsonParseTOSaveCloud(dict:AnyObject,urlstring:String,successfullResponse:String,alertmessage:String){
let json:NSData = try! NSJSONSerialization.dataWithJSONObject(dict, options: NSJSONWritingOptions.PrettyPrinted)
var d = NSString(data: json, encoding: NSUTF8StringEncoding)
print("jsonstr\(d!)")
let urlString = urlstring
urlString.stringByAddingPercentEncodingWithAllowedCharacters(NSCharacterSet.URLPathAllowedCharacterSet())!
let httpRequest = NSMutableURLRequest(URL: NSURL(string: urlString)!)
httpRequest.HTTPMethod = "POST"
httpRequest.HTTPBody = json
let sessionConfig = NSURLSessionConfiguration.defaultSessionConfiguration()
sessionConfig.HTTPAdditionalHeaders = ["Accept" : "application/json", "api-key" : "API_KEY"]
let session = NSURLSession(configuration: sessionConfig)
let postDataTask = session.dataTaskWithRequest(httpRequest, completionHandler: {(data: NSData?, reponse: NSURLResponse?, error: NSError?) in
if data == nil {
dispatch_async(dispatch_get_main_queue(), {
let alert = UIAlertView(title: alertmessage, message: "you are no longer connected to the Internet", delegate: self, cancelButtonTitle: "Dismiss")
alert.show()
})
} else {
print("data\(data)")
//let jsonResult = (try! NSJSONSerialization.JSONObjectWithData(data!, options: NSJSONReadingOptions.MutableContainers))
}
})
postDataTask.resume()
}
Hinweis: Wenn ich in PHP zu überprüfen, wie dies funktioniert es. Das ist, wenn ich die Jsonstring oder Jsonarray direkt es funktioniert.
<?php
$json = '[
{
"email" : "",
"Name" : "Ddd",
"contact2" : "",
"contact1" : ""
},
{
"email" : "",
"Name" : "Ddd",
"contact2" : "",
"contact1" : ""
},
{
"email" : "",
"Name" : "Dddddr",
"contact2" : "",
"contact1" : ""
}
]';
$array = json_decode($json, true);
foreach($array as $item) {
$uses = $item['Name'];
echo $uses;
}
?>
Verwenden Sie 'var_dump ($ inputJSON)' und stellen Sie sicher, dass nichts in der Eingabe vorhanden ist. Verwende auch 'json_last_error()', wenn 'json_decode()' 'NULL' zurückgibt. – Barmar
Danke.var_dump ($ inputJSON) gibt mir diese Zeichenkette (0) "" und json_last_error() gibt mir int (0) – Lydia
Wenn die Eingabe JSON leer ist, wie erwarten Sie dann, wenn Sie sie dekodieren? – Barmar