如何返回多个值?

时间:2014-01-14 19:29:58

标签: php html css return echo

我需要一些帮助。 由于我构建的结构,我无法使用回声。我没有时间解释原因。但我的问题是,有没有办法返回多个数据?让我们这样说:

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 &raquo;</p> 
            <div style="clear:both;"></div> 
            <hr/> 

            ';
            }

        }

但问题是返回只会给我一个值然后停止脚本。我该如何解决这个问题?我听说我应该返回一个数组或其他东西,但我该怎么做?谢谢。抱歉我的英文顺便说一句。

4 个答案:

答案 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 &raquo;</p> 
  <div style="clear:both;"></div> 
  <hr/> 

  ';
}

return $data;

如果您只需输出内容,则implodeecho

$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 &raquo;</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 &raquo;</p> 
        <div style="clear:both;"></div> 
        <hr/> 

        ';
        }
     return($data_return);

    }

希望这会有所帮助。