【问题标题】:How do I return more than one value?如何返回多个值?
【发布时间】:2014-02-03 00:40:46
【问题描述】:

我需要一些帮助。 由于我构建的结构,我无法使用 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/> 

            ';
            }

        }

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

【问题讨论】:

    标签: php html css return echo


    【解决方案1】:

    试试这个:

    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);
    
        }
    

    希望这会有所帮助。

    【讨论】:

    • 非常感谢!但返回 = "";部分给了我一个错误。
    【解决方案2】:

    将数据添加到数组并返回。

    $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 } ?>
    

    【讨论】:

    • 我不能使用回声。我想在不使用 echo 的情况下打印出数据
    • 您必须echo(或print)才能输出数据。
    【解决方案3】:

    只要return 语句执行,控制就会离开函数的范围。您只能return 一次。看起来您想要 做的是构建一个字符串并返回整个内容。所以不要这样:

    while(condition) {
        return value;
    }
    

    这样做:

    result = '';
    while(condition) {
        result .= value;
    }
    return result;
    

    这是在函数中聚合结果的标准模式。

    【讨论】:

      【解决方案4】:

      您可以轻松地返回包含多个键/值对的数组。你只需要知道如何在接收端使用它。

      return [
          'html' => '<hr/><div class="campaing_images>....</div>',
          'error' => false,
      ]
      

      你也可以只做一个普通的数组索引版本

      return [
          '<hr/><div class="campaing_images>....</div>',
          false
      ]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-05-23
        • 1970-01-01
        • 2012-01-23
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 2010-09-29
        • 2014-05-15
        相关资源
        最近更新 更多