2016-07-18 1 views
1

J'ai essayé plusieurs approches pour y arriver, y compris tous les types de devis, etc. Je vais vous donner mon code actuel avant d'expliquer la situation.Faire en sorte que la fonction à l'intérieur de l'écho soit sortie à la position formatée

function show_msgs($msgs) 
{ 
    foreach($msgs as $msg) { 
     echo '<div class="msg">' . $msg . '</div>' . "\n "; 
    } 
} 

function generate_msgBox() 
{ 
    global $array;   

    $stackoverflow = 
<<<EOT 
    <div class="container"> 
     <div class="msgBox"> 
      %s  
     </div> 
    </div> 
EOT; 

    $stackoverflow = sprintf($stackoverflow, show_msgs($array)); 

    echo $stackoverflow; 
} 

fonction generate_msgBox émet actuellement quand appelé:

<div class="msg">First message!</div> 
    <div class="msg">Seconds message!</div> 

    <div class="container"> 
     <div class="alertBox"> 

     </div> 
    </div> 

Cependant je en ai besoin pour sortir ceci:

<div class="container"> 
    <div class="alertBox"> 
     <div class="msg">First message!</div> 
     <div class="msg">Seconds message!</div>  
    </div> 
</div> 

J'ai essayé la fonction mettre directement à l'intérieur d'écho qui est entouré par des apostrophes et j'ai eu le même résultat.

Comment résoudre ce problème?

+0

Dupe: http://stackoverflow.com/questions/38400285/why-is-the-php-code-executing-before-the-html –

Répondre

2

Echo en fonction show_msgs fonctionne avant la sortie de la fonction generate_msgBox - lorsque vous l'appelez. il suffit de retourner la chaîne avec le résultat de la fonction

function show_msgs($msgs) 
{ 
    $ret = ''; 
    foreach($msgs as $msg) { 
     $ret .= '<div class="msg">' . $msg . '</div>' . "\n "; 
    } 
    return $ret; 
} 
+0

Merci, ça a bien fonctionné. En passant, vous avez manqué '$' devant 'ret'. – mamelepera

+0

Merci! :) Vous êtes les bienvenus – splash58

+0

Battez-moi à la réponse splash58! : P – Reisclef

1

Qu'en est-ce:

function show_msgs($msgs) 
{ 
    foreach($msgs as $msg) { 
     echo '<div class="msg">' . $msg . '</div>' . "\n"; 
    } 
} 

function generate_msgBox() 
{ 
    $stackoverflow = '<div class="container"><div class="msgBox">'.show_msgs().'</div></div>'; 

    echo $stackoverflow; 
} 
+0

Comme je l'ai dit dans le OP, j'ai déjà essayé ça. Cela donne le même résultat. – mamelepera