2016-08-08 21 views
0

Ich habe eine Klasse concat von Strings echos in falscher Reihenfolge

$page=new page;

mit Funktion,

header() { 
echo 'blah blah'; 
} 

jetzt, wenn ich zwei Strings verketten zusammen wie,

$string= ""; 
$string .= " 1234"; 
$string .= $page->header(); 
echo $string; 

Ergebnisse in,

blah blah 1234 

Wie kann ich es in der richtigen Reihenfolge bekommen?

+2

'echo' ist sofort ausgegeben. es ist keine Funktion, es hat keinen Rückgabewert, es gibt buchstäblich aus was auch immer es gesagt wird, RICHTIG DANN UND DORT. Also wird das Echo, das Sie in Ihrem Aufruf 'header()' ausführen, zuerst ausgeführt, DANN wiederholen Sie den Rest von $ string. –

Antwort

5

Sie sind nur die Zeichenfolge Echo.

Ihre header() Funktion sollte einen String zurückgeben:

function header() { 
    return 'blah blah'; 
} 
1

Die Anweisung echo in der Funktion wird sofort beim Aufruf dieser Funktion ausgeführt. Deshalb siehst du es zuerst. Wenn Sie wollen, dass es anhängen als Zeichenfolge Sie Rückkehr benötigen dieser Wert:

public function header() { 
    return 'blah blah'; 
} 
1

Sie keinen Wert für die String-Verkettung in Ihrer Funktion zurückkehren, sind Sie einfach Echo „bla bla“. Ihr Code entspricht:

$string = ""; 
$string .= "1234"; 
echo "blah blah"; 
$string .= ""; 
echo $string; 

Sie benötigen einen String aus Ihrer Funktion zurückzukehren in Verkettung verwenden wie:

function header() { return "blah blah"; }