Wenn ich ein Array mit Objekten habe:
$a = array($objA, $objB);
(Jedes Objekt hat eine __toString()
Methode)
Wie kann ich alle Array-Elemente in Zeichenfolgen umwandeln, sodass das Array $a
keine weiteren Objekte als deren Zeichenfolgendarstellung enthält? Gibt es einen Einzeiler oder muss ich das Array manuell durchlaufen?
Antworten:
Ein Einzeiler:
$a = array_map('strval', $a); // strval is a callback function
Siehe PHP DOCS:
array_map
strval
Genießen! ;)
quelle
Nicht getestet, aber so etwas sollte es tun?
foreach($a as $key => $value) { $new_arr[$key]=$value->__toString(); } $a=$new_arr;
quelle
Suchen Sie implodieren ?
$array = array('lastname', 'email', 'phone'); $comma_separated = implode(",", $array); echo $comma_separated; // lastname,email,phone
quelle
Ich kann es momentan nicht testen, aber können Sie überprüfen, was passiert, wenn Sie ein
implode()
solches Array verwenden? Der _toString sollte aufgerufen werden.quelle
implode($array)
.__toString()
generierten Zeichenfolgen in den entsprechenden Array-Elementen behalten .__toString()
enthält,
.Alix Axel hat die schönste Antwort. Sie können mit array_map auch alles auf das Array anwenden, wie ...
//All your objects to string. $a = array_map(function($o){return (string)$o;}, $a); //All your objects to string with exclamation marks!!! $a = array_map(function($o){return (string)$o."!!!";}, $a);
Genießen
quelle
Gibt es einen Grund, warum Sie Folgendes nicht tun können?
$a = array( (string) $objA, (string) $objB, );
quelle