dedlfix: Verschachteln von PHP-Funktionen

Beitrag lesen

Hi!

$words = explode(",", $this->keywords);

shuffle($words);
return $result = implode(",", $words);


> > nicht zu  
> > `return $result = implode(",", shuffle(explode(",", $this->keywords)));`{:.language-php}  
> > zusammenfassen?  
> weil PHP nur Arrays manipulieren kann, die als Variableninhalt im Speicher verfügbar sind, aber nicht temporäre, die noch nicht zugewiesen sind.  
  
Nein, PHP kann auch Arrays verarbeiten, die keiner Variable zugewiesen sind. Sonst könnte man ja keine Arrays als Funktionsergebenis zurückgeben. Noch nicht einmal erzeugen ($foo = array(...);) könnte man sie, denn eine Variablenzuweisung wird erst nach der Berechnung des rechten Ausdrucks vorgenommen, welcher erst einmal kurz in der Luft hängt.  
  
Vielmehr liegt das Unvermögen im konkreten Fall an [shuffle()](http://de.php.net/manual/en/function.shuffle.php). Das Array muss als Referenz übergeben werden, weil es direkt geschüttelt wird und nicht nur eine geschüttelte Kopie als Rückgabewert zurückkommt. Stattdessen kommt ein Boolean und der kann nicht implodiert werden.  
  
  
Lo!