我需要一些帮助。 由于我构建的结构,我无法使用回声。我没有时间解释原因。但我的问题是,有没有办法返回多个数据?让我们这样说:
final public function getCamps()
{
$campaigns = mysql_query("SELECT * From cms_news WHERE campaign='1'");
while($skriv = mysql_fetch_assoc($campaigns))
{
return
'
<hr/>
<div class="campaign_images">
</div>
<div class="campaign_content">
<b>'.$skriv['title'].'</b><br>
'.$skriv['shortstory'].'
</div>
<p class="gothere">Go there »</p>
<div style="clear:both;"></div>
<hr/>
';
}
}
但问题是返回只会给我一个值然后停止脚本。我该如何解决这个问题?我听说我应该返回一个数组或其他东西,但我该怎么做?谢谢。抱歉我的英文顺便说一句。
答案 0 :(得分:1)
将数据添加到数组并返回该数据。
$data = array();
while($skriv = mysql_fetch_assoc($campaigns))
{
$data[] =
'
<hr/>
<div class="campaign_images">
</div>
<div class="campaign_content">
<b>'.$skriv['title'].'</b><br>
'.$skriv['shortstory'].'
</div>
<p class="gothere">Go there »</p>
<div style="clear:both;"></div>
<hr/>
';
}
return $data;
如果您只需输出内容,则implode
和echo
:
$data = $obj->getCamps();
echo implode($data);
虽然我个人不会在循环中添加HTML
。我只是将行数据添加到数组并返回:
final public function getCamps()
{
$data = array();
$campaigns = mysql_query("SELECT * From cms_news WHERE campaign='1'");
while($skriv = mysql_fetch_assoc($campaigns))
{
$data[] = $skriv;
}
return $data;
}
然后迭代返回的数组并添加HTML
:
<?php foreach ($obj->getCamps() as $camp) { ?>
<hr>
<div class="campaign_images"></div>
<div class="campaign_content">
<b><?php echo $camp['title']; ?></b>
<br>
<?php echo $camp['shortstory']; ?>
</div>
<p class="gothere">Go there »</p>
<div style="clear:both;"></div>
<hr>
<?php } ?>
答案 1 :(得分:1)
只要return
语句执行,控制就会离开函数的范围。你只能return
一次。看起来你想要做的是构建一个字符串并返回整个事物。所以不要这样:
while(condition) {
return value;
}
这样做:
result = '';
while(condition) {
result .= value;
}
return result;
这是在函数中聚合结果的标准模式。
答案 2 :(得分:0)
您可以轻松返回具有多个键/值对的数组。您只需要知道如何在接收端使用它。
return [
'html' => '<hr/><div class="campaing_images>....</div>',
'error' => false,
]
你也可以只做一个普通的数组索引版本
return [
'<hr/><div class="campaing_images>....</div>',
false
]
答案 3 :(得分:0)
试试这个:
final public function getCamps()
{
$campaigns = mysql_query("SELECT * From cms_news WHERE campaign='1'");
$data_return = "";
while($skriv = mysql_fetch_assoc($campaigns))
{
$data_return .= //this returns multiple values from your db
'
<hr/>
<div class="campaign_images">
</div>
<div class="campaign_content">
<b>'.$skriv['title'].'</b><br>
'.$skriv['shortstory'].'
</div>
<p class="gothere">Go there »</p>
<div style="clear:both;"></div>
<hr/>
';
}
return($data_return);
}
希望这会有所帮助。