2017-02-10 19 views
-1

我一直在搜索它無處不在,但我找不到解決方案...
也許iam使用錯誤的關鍵字,因爲我不知道這個問題具體的關鍵字...PHP的foreach用戶名,但不是foreach乾草

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

當我想使$標記名的回聲

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 

我想要的是讓這樣的

hay @john @bob @michael @stephen @rick @samuel lets meet up 
回聲

不用循環約翰兩次...
感謝大家的關注,原諒我的語言,我不能講話英語多...

回答

2

您可以像這樣創建的標記名數組:

$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

它說致命錯誤:[]不支持字符串 – mieburungdara

+0

操作者它說 通知:Array對字符串的轉換在/home/sianiga1/public_html/a1.php上線37 警告:破滅():參數必須成爲37行上的/home/user/public_html/test.php中的數組。乾草 – mieburungdara

+0

立即嘗試。只是一個錯字。 :) – jetblack

0

我懷疑提供的代碼是您遇到的問題的代碼。考慮下面的代碼

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

$tagname被重新分配與每個循環迭代。因此$hello只能包含最後一個標記名。因此,如果我們echo $hello輸出將是hey @samuel。我沒有看到John打印兩次的理由 - 至少不是從你的循環中打印出來的。因此,我想,$users只包含約翰兩次。請看下面的代碼的精簡例子

<?php 

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

這個片段將輸出乾草@約翰@jack @joe讓出去!here

爲了調查您的問題,首先您應該考慮傾銷$usersvar_dump - see here。這應該澄清你的約翰問題。此外,您應該更好地理解代碼的作用,以及如何不將用於構建輸出的代碼與實際輸出內容的代碼混淆在一起。

最後但並非最不重要:請重新檢查實際顯示您描述的行爲的代碼,因爲我沒有看到您的問題中的代碼可以。