Warnung: json_decode() erwartet parameter 1 to be string, array given
Hier ist der code:
<? $fields = json_decode($this->item->extra_fields);
$allowed_fields= array('3','5');
if ( $fields != NULL ) {
foreach ( $fields as $field ) {
if ( in_array($field->id, $allowed_fields ) && $field->value != NULL) {
?>
<span class = "list_for<? echo $field->id; ?>">
<? echo $field->value;?></span><? } } }?>
Wenn ich json_decode, um die Funktionen json_encode bekomme ich die folgende Fehlermeldung:
Warning: Invalid argument supplied for foreach()...
----------
Alles funktionierte vor dem upgrade von PHP 5.4 ab 5.3.
Ich bin kein Entwickler, so versuchen Sie bitte nicht zu technisch. Vielen Dank im Voraus!
- es schon sagt in der Fehlermeldung, füttern Sie es mit einem json-string, sondern Sie fütterte es mit einem array
$fields
ist kein array.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beachten Sie, dass json_decode akzeptiert string und nach dem oben genannten Fehler, die Sie versuchen, übergeben Sie ein array, um es also, wenn Sie brauchen, um die Iteration auf die Felder array, das Sie ignorieren möchten json_decode, wie es scheint, dass Sie bereits ein array.
die Funktionen json_encode akzeptiert array, aber es gibt eine Zeichenfolge, so dass es Ihnen eine Warnung, wenn Sie versuchen, umzusetzen, sting
also versuchen Sie, den untenstehenden code.
wie gesagt in der Anleitung, tun Sie es wie diese
Wenn TRUE zurückgegeben Objekte umgewandelt werden assoziative arrays.
$Felder wird ein array und die
foreach()
arbeitenKönnen Sie nicht überprüfen, ob seine
NULL
.Versuchen
if($fields) {
Erhalten Sie "true", wenn er Sie entschlüsseln kann dem json-string.
Bitte kopieren Sie diesen code und schauen Sie, dass Fehler entfernen oder nicht.
Sie können nicht überprüfen Sie die $ - Felder mit NULL.Also Sie haben zu prüfen, sondern nur mithilfe !empty($Felder)
Testen. vor dem senden an die PHP-ändern Sie Ihre jsonObj string.