2013-03-13 43 views
0

我有以下的PHP,使用Wordpress + BuddyPress的插件:PHP變量在正確的地方不渲染

$blogusers = get_users('role=s2member_level1&number=5'); 
foreach ($blogusers as $user) { 
    $username = str_replace('"', '',$user->user_nicename); 
    $fullname = str_replace('"', '',bp_profile_field_data(array('user_id'=>$user->ID,'field'=>'name'))); 
    $category = str_replace('"', '',bp_profile_field_data(array('user_id'=>$user->ID, 'field'=>'category'))); 
    echo '<div style="float:left; width:100px; height:100px;">'; 
    echo '<h3><a href="members/' . $username . '">' . $fullname . '</a></h3>'; 
    echo '<strong>Camp Type: </strong>' . $category . '<br />'; 
    echo '</div>'; 
} 

的$全名和$類別乏得到碰着浮動前:左元素,但一個$ username變量保持原位,這就是所有變量應該被渲染的方式。

即:

<div class="page" id="blog-latest" role="main"> 
<div style="width:500px;height:100px;position:relative;"> 
Frank GoreType 4<div style="float:left; width:100px; height:100px;"><h3><a href="members/fgore"></a></h3><strong>Camp Type: </strong><br /></div> 
</div> 

任何線索就是爲什麼這兩個變量被拋出了回聲聲明?

+1

你也可以給一個輸出刺痛嗎? – hjpotter92 2013-03-13 07:21:22

+0

或者您能否提供當前的網站鏈接進行展示? – 2013-03-13 08:25:38

+0

對不起,用輸出字符串 – GMan 2013-03-14 01:12:53

回答

0

它與php的echo構造如何處理連接有關。這對我來說絕對沒有意義,但顯然,在發生串聯時,會打開一個臨時變量來執行組合,然後輸出結果。

如果您要使用該語法,請在echo語句中用逗號替換句點。回聲將逗號分隔值作爲單獨的語句處理,並按收到的順序回顯。

另外,它的速度快了一點,但每百萬條回聲語句只有1秒。 :)

我的首選方法是創建一個html字符串,然後每個邏輯塊回顯一次。

$echo = '<div style="float:left; width:100px; height:100px;">' 
     . '<h3><a href="members/' . $username . '">' . $fullname . '</a></h3>' 
     . '<strong>Camp Type: </strong>' . $category . '<br />' 
     . '</div>'; 
echo $echo; 
+0

更新我嘗試了兩種方法 - 用逗號代替句點回顯一個字符串,並在回顯結果之前將html存儲到$ echo中 - 並且兩種方式都返回了相同的結果。不同之處在於,在使用$ echo時,在輸出的開始和結尾添加雙引號。 – GMan 2013-03-14 05:01:19

+0

嗯,我只是想發表評論,然後似乎profile_field_data函數沒有返回一個靜態字符串,但它看起來像你想出來的! – Poet 2013-03-14 14:59:56

0

事實證明它與bp_profile_field_data有關。它是核心用來檢索數據的函數。更適合開發人員的方法get_bp_profile_field_data可以更好地工作。我正在格式化所有的字符串。不過,我很感謝你分享知識。謝謝!