Array-zu-String-Konvertierungsfehler bei Verwendung von implode

Lesezeit: 3 Minuten

Ich bin verwirrt über einen Fehler, den ich erhalte Array to string conversion

Der Grund, warum ich verwirrt bin, ist, dass ich genau das versuche, ein Array in eine Zeichenfolge umzuwandeln, indem ich verwende implode was mir laut Handbuch erlauben sollte, mein Array in einen String umzuwandeln. Warum erhalte ich also eine Fehlermeldung?

Var $matches ist ein Array. $error_c ist die var, in der ich die Zeichenfolge speichern möchte.

print_r($matches); // prints the array correctly
$error_c = implode(',', $matches);
echo $error_c;

Ausgänge einfach array und gibt:

Notice: Array to string conversion in ...

Das Handbuch sagt das implode — Join array elements with a string Warum erhalte ich eine Fehlermeldung, wenn ich es versuche?

Bearbeiten: Dies ist die Ausgabe, die ich bekomme $matches

Array ( [0] => Array ( [0] => C [1] => E [2] => R [3] => R [4] => O [5] => R [6] => C [7] => O [8] => N [9] => T [10] => A [11] => C [12] => T [13] => S [14] => U [15] => P [16] => P [17] => R [18] => E [19] => S [20] => S [21] => E [22] => D ) ) 

  • das Element Ihres Arrays sollte string oder have sein __toString Fähigkeit

    – Georg G

    19. September 2014 um 8:43 Uhr


  • Du hast es! Überprüfen Sie die Antworten 😉

    – Flüssiggas

    19. September 2014 um 8:44 Uhr

  • $matches ist ein Array . Wie können Sie dann das gesamte Array $matches implodieren, ohne es zu explodieren, wenn nicht, dann müssen Sie mit einem Index-Array wie $matches erwähnen[0]

    Benutzer3697634

    19. September 2014 um 9:13 Uhr

  • Dies ist ein spezifischer Fehler, auf den Leute manchmal stoßen, wenn sie mit PHP zu tun haben – er ist überhaupt nicht weit verbreitet. Der Fehler ist buchstäblich “Array to String Conversion” in der spezifischen Codezeile mit “implode”. Ich bin mit dem Schließen der Frage auf dieser Grundlage nicht einverstanden. Tatsächlich bin ich genau deshalb auf diese Frage gelandet, weil ihr Wortlaut genau dem Fehler entsprach, nach dem ich gesucht hatte, und die Antwort mir geholfen hat, ihn zu lösen. Es ist nicht zu breit.

    – Dan Nissenbaum

    9. September 2016 um 8:59 Uhr


Sie haben ein Array von Arrays … Versuchen Sie Folgendes:

$error_c = implode(',', $matches[0]);

$error_c = implode(',', $matches[0]);
echo $error_c;

weil du array enthält arrays Innerhalb

Benutzer-Avatar
Mike

Sie dürfen verwenden array_values() für Array von Arrays

z.B implode (",", array_values($array))

Das Problem liegt daran, dass Sie angerufen werden implode auf ein Array was zweidimensional ist.

Array ( 
    [0] => Array ( 
        [0] => C 
        [1] => E 
        [2] => R 
        [3] => R 
        [4] => O 
        [5] => R 
        [6] => C 
        [7] => O 
        [8] => N 
        [9] => T 
        [10] => A 
        // ...
    ) 
) 

was äquivalent ist

[["C", "E", "R", "R", "O", "R", "C", "O", "N", "..." ]]

Was Sie tun sollten, bevor Sie eine Implosion durchführen, ist, das Array zu glätten und danach zu callen implode mit dem abgeflachten Array oder indem Sie implode nur mit dem ersten Element im Hauptarray aufrufen, das ein Array ist.

Hier ist eine Frage, die eine Anleitung zum Abflachen eines Arrays enthält
Wie flacht man ein mehrdimensionales Array ab?

Mit einer Funktion, die es erlaubt, ein Array zu glätten, können Sie den Aufruf so durchführen

implode(flatten($array_of_data), $matches);

Sie müssen nicht nur auf das erste Element zugreifen, unabhängig davon, wie viele Elemente darin enthalten sind $matches Array der flatten Die Funktion gibt ein eindimensionales Array zurück, das Sie aufrufen können implode

TU das:

print_r($matches); // prints the array correctly
$error_c = implode(',', $matches[0]);
echo $error_c;

Benutzer-Avatar
jmullee

Um einfach alle Daten im Array in einen String zu packen, versuchen Sie Folgendes

function whatever_to_string($in){
    ob_start();
    print_r($in);
    return ob_get_clean();
    }

Die ‘ob_*’-Funktionen steuern den Ausgabepuffer.

http://php.net/manual/en/function.ob-start.php

http://php.net/manual/en/function.ob-get-clean.php

1130790cookie-checkArray-zu-String-Konvertierungsfehler bei Verwendung von implode

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy