2013-03-13 3 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>'; 
} 

в $ FullName и $ категории VARS ударены раньше поплавка: левый элемент, но переменная имени пользователя $ остается на месте, так как все переменные должны быть отображены.

т.е.

<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

+0

Или вы можете указать ссылку на текущий сайт для отображения? –

+0

Извините, обновлено с помощью строки вывода – GMan

ответ

0

Это связано с тем, как конструкция эха php имеет дело с конкатенациями. Для меня это совершенно не имеет смысла, но, видимо, когда происходит конкатенация, она открывает временную переменную для выполнения комбайна, а затем выводит результат.

Если вы собираетесь использовать этот синтаксис, замените периоды запятыми в операторах эха. 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

+0

А, я просто собирался прокомментировать, что тогда кажется вероятным, что функция profile_field_data не возвращала статическую строку, но похоже, что вы поняли это! – Poet

0

Получается, что это как-то связано с bp_profile_field_data. Это функция, используемая ядром для извлечения данных. Более удобный для разработчиков метод get_bp_profile_field_data был намного лучше работать. Я получаю правильное форматирование всех моих строк. Однако я ценю, что вы делитесь знаниями. Благодаря!