2017-02-10 7 views
-1

Ich habe es überall gesucht, aber ich kann die Lösung nicht finden ...
vielleicht iam mit falschen Schlüsselwort, weil ich weiß nicht, was für dieses Problem Schlüsselwort ...php foreach Benutzername, aber nicht foreach Heu

foreach ($users as $user) { 
    $username = $user->user->username; //the echo is johnjohnbobmichaelstephenricksamuel 
    $tagname= "@".$username." "; //the echo is @john @john @bob @michael @stephen @rick @samuel 
} 

Wenn ich will, das Echo von $ tagname machen

foreach ($users as $user) { 
    $username = $user->user->username; //the echo is johnjohnbobmichaelstephenricksamuel 
    $tagname= "@".$username." "; //the echo is @john @john @bob @michael @stephen @rick @samuel 
} 
$hello = "hay ".$tagname; //the echo is hay @johnhay @johnhay @bobhay @michaelhay @stephenhay @rickhay @samuel 

, was ich will, ist das Echo wie diese

hay @john @bob @michael @stephen @rick @samuel lets meet up 
machen

ohne zweimal Looping john ...
danken für die Aufmerksamkeit jeder, meine Sprache verzeihen, i cant Sprache Englisch zu viel ...

Antwort

2

Sie Array von Tagnamen wie folgt erstellen:

$tagnames = []; 

foreach ($users as $user) { 
    $username = $user->user->username; //the echo is johnjohnbobmichaelstephenricksamuel 
    $tagname= "@".$username; //the echo is @john @john @bob @michael @stephen @rick @samuel 
    $tagnames[] = $tagname; 
} 

echo "hay " . implode(' ', array_unique($tagnames)); 
+0

es Fatal error sagen: Operator [] nicht für Strings unterstützt – mieburungdara

+0

sagen, es Hinweis: Array String-Konvertierung in /home/sianiga1/public_html/a1.php on line 37 Warning: implode(): Argument muss sei ein Array in /home/user/public_html/test.php in Zeile 37 hay – mieburungdara

+0

Versuche es jetzt. Nur ein Tippfehler. :) – jetblack

0

Ich würde bezweifeln, dass der angegebene Code genau der Code ist, mit dem Sie Probleme hatten. Betrachtet man den folgenden Code

foreach ($users as $user) { 
    $username = $user->user->username; 
    $tagname= "@".$username." "; 
} 
$hello = "hay ".$tagname; 

$tagname wird mit jeder Schleifeniteration neu zugewiesen. Daher sollte $hello nur den letzten Tag-Namen enthalten. Also, wenn wir echo $hello die Ausgabe wäre hey @samuel. Ich sehe keinen Grund dafür, dass John zweimal gedruckt wird - zumindest nicht von deiner Schleife. Daher würde ich annehmen, dass $users John einfach zweimal enthält. Bitte beachten Sie den folgenden Code für eine abgespeckte Beispiel

<?php 

$users = ["john", "jack", "joe"]; 
foreach($users as $user) 
{ 
    $tagnames = $tagnames."@".$user." "; 
} 
echo "hay ".$tagnames."lets go out!"; 

Dieser Code-Schnipsel ausgibt Heu @John @jack @ Joe lets go out! Siehe here.

Um Ihre Probleme zu untersuchen, sollten Sie in erster Linie in Betracht ziehen, $users mit var_dump - see here dumping. Dies sollte Ihr John-Problem klären. Außerdem sollten Sie ein besseres Verständnis dafür entwickeln, was Ihr Code macht und wie Sie den Code, den Sie zum Erstellen Ihrer Ausgabe verwenden, nicht mit dem Code verwechseln, der tatsächlich etwas ausgibt.

Last but not least: Bitte überprüfen Sie den Code, der das von Ihnen beschriebene Verhalten zeigt, da ich nicht sehe, dass der Code in Ihrer Frage das könnte.