überprüfen, ob Element kann in eine Zeichenfolge konvertiert werden?
Schreibe ich eine debug-Methode.
Was ich habe, ist
if(is_xxx($item)){
//echo output info for type
}
what I want to do at the end is
if(can_be_string($item))
echo $item;
Gibt es eine can_be_string
Typ Funktion?
- die einzigen Elemente, die ich kenne, die keine Strings sind Objekte ohne
__toString()
Methode. Wo bekommt man Probleme? - Was ist die Determinante, ob etwas, das kann ein string sein oder nicht? Ich verstehe nicht die Frage.
- Ich glaube nicht, dass eine Ressource umgewandelt werden kann Zeichenkette, die entweder - nicht nur Objekte (es sei denn, Sie haben die __toString -) aber ich denke, das sind die einzigen Ausnahmen
- ja, diese Funktion hat keine Kontrolle über das, was ist gesteckt. so jemand könnte passieren, zum Beispiel ein Datenbank-Ressource, die nicht in eine Zeichenfolge konvertiert werden.
- Fügen Sie eine Falle is_null (), als auch wenn Sie als echo eher als var_dumping... sonst kannst du nicht sehen, was echo
- Baker, @Hailwood Ressourcen können gegossen werden als string und wird zu so etwas wie "Resource id #X".
- vielleicht für Sie von Interesse: phpro.org/tutorials/PHP-Type-Casting.html
- ich schlage vor, Sie darüber im klaren sein, was meinst du mit 'item'. Mit Sitz in der Programmierung Terminologie meinst du das array-Element oder einfach nur einen beliebigen Wert? Auch sollte dir klar sein über das, was ist: "string", meinst du etwas, dass können verkettet werden mit einer Schnur oder gegossenen als
(string)
? oder auch Objekte mit "stringification" Methoden implementated?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ok, editiert, mit Einbeziehung Michiel Pater's Vorschlag (die Antwort ist jetzt vorbei) ans @eisberg Vorschläge.
settype
zurücktrue
mit Objekten, egal was, wie es scheint.var_dump()
,var_export()
,print_r()
, ... ich würdeswitch
/case
diegettype()
.settype()
nicht zeigen, bis in me.veekun.com/blog/2012/04/09/php-a-fractal-of-bad-designZur Vervollständigung...
http://www.php.net/is_scalar, verfügbar seit PHP 4, nicht ein einziges Wort über ihn.. 🙂
__toString()
. Auch der Hinweis sagt, dass es nicht betrachten Wert null Skalare aus irgendeinem Grund. Auf top von, dass mit dieser Funktion auf die Ressourcen, scheint unzuverlässig.Wie etwa
__call
- Funktion finden Sie unter: 3v4l.org/4ttLv. Verwendenmethod_exists
stattis_callable
Quick-and-dirty-Implementierung mit test:
array_filter
zu entfernen, nicht stringable Elemente.Hier ist der kürzeste Weg, die ich finden kann:
wie über diese Entscheidung?
Wenn is_string() nicht hilft, dann kann ich nur vorschlagen, einige Ideen:
if (strlen()) { // It's save to use where you expect a string. }
Es ist ganz einfach:
Der code wurde bereits getestet.
Die
method_exists()
Funktion gibtfalse
wenn$var
ist nicht ein Objekt, so ist diese überprüfung nicht notwendig ist.Ich glaube nicht, dass die Antworten zufriedenstellend waren.
Einfachste Implementierung:
Mit
print_r()
undvar_dump()
Funktionen können Sie ausdrucken Inhalt einer variable.In Fall, dass Sie nicht wie die Ausgabe der genannten Funktionen, es gibt eine Menge von Typ-überprüfung-Funktionen hier http://www.php.net/manual/en/ref.var.php