2016-08-08 1 views
0

J'ai une classe concat des echos cordes en mauvais ordre

$page=new page;

avec fonction,

header() { 
echo 'blah blah'; 
} 

maintenant si je concat deux cordes ensemble comme,

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

résultats dans,

blah blah 1234 

comment puis-je l'obtenir dans le bon ordre?

+2

'echo' est sortie immédiate. ce n'est pas une fonction, il n'a pas de valeur de retour, il sort littéralement tout ce qu'on lui dit, juste et là. Donc, l'écho que vous faites dans votre appel 'header()' s'exécute d'abord, ALORS vous faites écho au reste de $ string. –

Répondre

5

Vous êtes juste faisant écho à la chaîne.

votre fonction header() doit retourner une chaîne:

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

L'instruction echo dans la fonction est exécutée immédiatement lors de l'appel de cette fonction. C'est pourquoi vous le voyez en premier. Si vous voulez ajouter à la chaîne comme vous devez retour cette valeur:

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

Vous n'êtes pas retourner une valeur pour la concaténation de chaîne dans votre fonction, vous simplement écho « bla bla ». Votre code est équivalent à:

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

Vous devez retourner une chaîne de votre fonction à utiliser dans concaténation comme:

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