Как мне объединить выходные данные foreach в одну переменную?

#php

#php

Вопрос:

Я должен передать содержимое сообщения в метод, чтобы оно было правильно размещено в WordPress. Весь размещенный контент будет помещен в переменную $content, которая передается методу. Как я могу получить содержимое цикла foreach в переменную $content?

 <?php
$return = '';
foreach ($response['daily']['data'] as $cond) {

echo '<br /><br /><strong>' . date('l, F j, Y', $cond['time']) .'</strong><br />

<div id="dailysummary"><br />Daily Summary: ' . $cond['summary'] . '<br /><br /></div>

<table style="border:1px solid #ccc">

<tr>
<td>
High
</td>
<td>
'.round($cond['temperatureMax']).'
</td>
</tr>

<tr>
<td>
Low
</td>
<td>
'.round($cond['temperatureMin']).'
</td>
</tr>

<tr>
<td>
Chance of precip.
</td>
<td>
'.round($cond['precipProbability']).'%
</td>
</tr>   


<tr>
<td>
Wind speed
</td>
<td>
'.round($cond['windSpeed']).' mph
</td>
</tr>   



<tr>
<td>
Dewpoint.
</td>
<td>
'.round($cond['dewPoint']).'
</td>
</tr>   


<tr>
<td>
Humidity
</td>
<td>
'.round($cond['humidity']).'
</td>
</tr>   

</table>



<br /><br />';

}           
 

Комментарии:

1. @nogad OP также может заслужить репутацию в других темах и языках программирования.

2. @nogad Да, я этого тоже не понимаю. Похоже, он новичок в PHP, и большинство его замечаний исходят из ASP.NET и C #, но конкатенация — это одно и то же на каждом языке, который я знаю

3. конечно, это разные языки, но вы должны знать слова в Google? @Rizier123

4. @nogad Да, это верно, даже не имея никакой репутации 🙂 Но сама по себе репутация не говорит о том, в каких темах OP хорош.

5. я надеюсь, что представитель скажет: «Я знаю, как работают компьютеры, И я могу использовать Google» 😉

Ответ №1:

Либо создавать переменные, а не повторять:

 $html = '';
foreach(...) {
   $html .= '... build html here...';
}
 

Или сохраните ваш текущий код и используйте буферизацию вывода:

 ob_start();
foreach(...) {
   echo '... html goes here ...';
}
$html = ob_get_clean();
 

Нет правильного / неправильного способа сделать это. В любом случае вы получите фрагмент html в памяти.

Ответ №2:

Сделайте это:

 $content = "";

foreach ($response['daily']['data'] as $cond) {

$content .= '<br /><br /><strong>' . date('l, F j, Y', $cond['time']) .'</strong><br />
[...]
 

Вы создадите пустую строку и добавите к ней больше текста в каждом цикле.

Ответ №3:

Вот так — используя .= operator:

 $content = '';

foreach ($response['daily']['data'] as $cond) {

   $content .= '<br /><br /><strong>' . date('l, F j, Y', $cond['time']).'</strong><br />

   <div id="dailysummary"><br />Daily Summary: ' . $cond['summary'] . '<br /><br /></div>

    <table style="border:1px solid #ccc">
    ... ';

}

print $content;