This is my example of my code i need to get work...
If i use " echo '...'; " everything is ok but if i use " return '...'; " i get only one record. The problem i dont want to use echo is i get all results on the top of my page. i need to use return because i call this function somewhere else on my page.
Thanks!
public function showForum()
{
$cats = $this->db->query("SELECT * FROM forum_cats ORDER BY cat_order ASC")->fetchAll();
foreach ($cats as $cat) {
return '<table class="table forum table-striped">
<thead>
<tr>
<th class="cell-stat"
style="background-image: url(\'\'); background-size: 50px; background-repeat: no-repeat; background-position: center;"></th>
<th>
<h3>' . $cat['cat_name'] . '</h3>
</th>
<th class="cell-stat text-center hidden-xs hidden-sm">Topics</th>
<th class="cell-stat text-center hidden-xs hidden-sm">Posts</th>
<th class="cell-stat-2x hidden-xs hidden-sm">Last Post</th>
</tr>
</thead>
<tbody>
<tr>
<td class="text-center"><i class="fa fa-question fa-2x text-primary"></i></td>
<td>
<h4><a href="#">Frequently Asked Questions</a><br>
<small>Some description</small>
</h4>
</td>
<td class="text-center hidden-xs hidden-sm"><a href="#">9 542</a></td>
<td class="text-center hidden-xs hidden-sm"><a href="#">89 897</a></td>
<td class="hidden-xs hidden-sm">by <a href="#">John Doe</a><br>
<small><i class="fa fa-clock-o"></i> 3 months ago</small>
</td>
</tr>
</tbody>
</table>';
}
}
Store all the data you want to return in a string, and later return the string:
public function something() {
$result = ""; // Create empty string
foreach($array as $val) {
$result .= "something"; // Add something to the string in the loop
}
return $result; // Return the full string
}
An alternative (since you already have an array) would be mapping the array to your string values and returing the imploded the array like so:
public function something() {
return implode('', array_map(function($val) {
return "something";
}, $array));
}