如何在PHP中回显循环并将其放入变量中?

如何在PHP中回显循环并将其放入变量中?

问题描述:

嗨我有一个问题,在从PHP发送数据到PDF。我认为唯一的办法是把一个变量放入将要发送到pdf函数的数据中。 这里是我需要把一个PHP变量的代码..如何在PHP中回显循环并将其放入变量中?

<table width="95%" height="95%"> 
      <tr> 
       <td align="center"> 
        <table width="100%" border="0" cellpadding="2" cellspacing="2"> 
        <tr align="center"> 
         <td colspan="7" bgcolor="#2561cf" style="color:#FFFFFF"><strong><?php echo $monthNames[$cMonth-1].' '.$cYear; ?></strong></td> 
        </tr> 
        <tr> 
         <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Sun</strong></td> 
         <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Mon</strong></td> 
         <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Tue</strong></td> 
         <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Wed</strong></td> 
         <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Thu</strong></td> 
         <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Fri</strong></td> 
         <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Sat</strong></td> 
        </tr> 

        <?php 
         $timestamp = mktime(0,0,0,$cMonth,1,$cYear); 
         $maxday = date("t",$timestamp); 
         $thismonth = getdate ($timestamp); 
         $startday = $thismonth['wday']; 

         for ($i=0; $i<($maxday+$startday); $i++) { 
         $day = ($i - $startday + 1); 
         if($day['1'] == '1' || $day['1'] == '2' || $day['1'] == '3' || $day['1'] == '4' || $day['1'] == '5' || $day['1'] == '6' || $day['1'] == '7' || $day['1'] == '8' || $day['1'] == '9'){ 
          $day = '0'.$day; 
         }else{ 
          $day = $day; 
         } 
         $date = $monthNames[$cMonth-1].' '.$day.', '.$cYear; 
         $date2 = $cMonth.'/'.$day.'/'.$cYear; 
         $events = $this->getEvents($date2); 
         if(($i % 7) == 0) echo "<tr>\n"; 
         if($i < $startday) echo "<td></td>\n"; 
         else echo "<td valign='top' align='left' width='50px' height='50px'><div class='".$dateId."' id='".$date."' title='".$date2."' style='cursor:pointer;'>". ($i - $startday + 1) .'</div>'. $events."</td>\n"; 
         if(($i % 7) == 6) echo "</tr>\n"; 
         } 
        ?> 
        </table> 
       </td> 
      </tr> 
     </table> 
+0

你能解释一下这个问题吗? – Blender 2012-03-16 05:56:22

+0

我在这里看到很多冗余代码。 – jerrymouse 2012-03-16 05:57:01

+0

不需要'else {day} $ day = $ day; }' – jerrymouse 2012-03-16 05:57:36

很可能只是尝试拼接的只是把你的代码的函数里面的循环。例如,

function test(){ 
    echo '{the code}'; 

} 

$var = test(); 

虽然我不完全理解你问我会尽量回答它是什么!

如果你想你是在一个变量使用PHP当前显示的,而不是使用回声页面,一切,你会想追加这些信息到你的变量,所以......

   <?php 
        $timestamp = mktime(0,0,0,$cMonth,1,$cYear); 
        $maxday = date("t",$timestamp); 
        $thismonth = getdate ($timestamp); 
        $startday = $thismonth['wday']; 

        for ($i=0; $i<($maxday+$startday); $i++) { 
        $day = ($i - $startday + 1); 
        if($day['1'] == '1' || $day['1'] == '2' || $day['1'] == '3' || $day['1'] == '4' || $day['1'] == '5' || $day['1'] == '6' || $day['1'] == '7' || $day['1'] == '8' || $day['1'] == '9'){ 
         $day = '0'.$day; 
        }else{ 
         $day = $day; 
        } 
        $date = $monthNames[$cMonth-1].' '.$day.', '.$cYear; 
        $date2 = $cMonth.'/'.$day.'/'.$cYear; 
        $events = $this->getEvents($date2); 
        if(($i % 7) == 0) echo "<tr>\n"; 
        if($i < $startday) echo "<td></td>\n"; 
        else echo "<td valign='top' align='left' width='50px' height='50px'><div class='".$dateId."' id='".$date."' title='".$date2."' style='cursor:pointer;'>". ($i - $startday + 1) .'</div>'. $events."</td>\n"; 
        if(($i % 7) == 6) echo "</tr>\n"; 
        } 
       ?> 

将成为...

   <?php 
        $send_me_to_pdf = ''; 
        $timestamp = mktime(0,0,0,$cMonth,1,$cYear); 
        $maxday = date("t",$timestamp); 
        $thismonth = getdate ($timestamp); 
        $startday = $thismonth['wday']; 

        for ($i=0; $i<($maxday+$startday); $i++) { 
        $day = ($i - $startday + 1); 
        if($day['1'] == '1' || $day['1'] == '2' || $day['1'] == '3' || $day['1'] == '4' || $day['1'] == '5' || $day['1'] == '6' || $day['1'] == '7' || $day['1'] == '8' || $day['1'] == '9'){ 
         $day = '0'.$day; 
        }else{ 
         $day = $day; 
        } 
        $date = $monthNames[$cMonth-1].' '.$day.', '.$cYear; 
        $date2 = $cMonth.'/'.$day.'/'.$cYear; 
        $events = $this->getEvents($date2); 
        if(($i % 7) == 0) $send_me_to_pdf .= "<tr>\n"; 
        if($i < $startday) $send_me_to_pdf .= "<td></td>\n"; 
        else $send_me_to_pdf .= "<td valign='top' align='left' width='50px' height='50px'><div class='".$dateId."' id='".$date."' title='".$date2."' style='cursor:pointer;'>". ($i - $startday + 1) .'</div>'. $events."</td>\n"; 
        if(($i % 7) == 6) $send_me_to_pdf .= "</tr>\n"; 
        } 
       ?> 

现在,您可以用$ send_me_to_pdf作为参数传递给要发送这个数据您的PDF功能?

如果你有一个巨大的HTML/PHP的一块木头,你需要存储在一个变量,而不是输出到屏幕的输出,你可以使用output buffering功能,使这个简单的:

<?php 
ob_start(); // Start the buffer (nothing will be output) 
?> 
<p>Lots and lots of mixed <?php echo 'HTML'; ?> and PHP...</p> 
<?php 
$content = ob_get_clean(); // End the buffer and assign everything to $content 
?> 
+0

它不再显示警告,但pdf输出为空。 – 123 2012-03-16 10:35:36

+0

听起来像你有一个单独的问题值得一个新的问题。如果您决定要问,请确保包含您的代码以及您正在使用的PDF库。我还建议只使用少量的样本数据,直到您使用它,并检查您使用的工具的文档。 – 2012-03-16 12:17:13

+0

我已经解决了我的问题,谢谢.. :)) – 123 2012-03-21 08:28:05

尝试concating变量

<?php 
    $var=' 
    <table width="95%" height="95%"> 
       <tr> 
        <td align="center"> 
         <table width="100%" border="0" cellpadding="2" cellspacing="2"> 
         <tr align="center"> 
          <td colspan="7" bgcolor="#2561cf" style="color:#FFFFFF"><strong>'.$monthNames[$cMonth-1].' '.$cYear.'</strong></td> 
         </tr> 
         <tr> 
          <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Sun</strong></td> 
          <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Mon</strong></td> 
          <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Tue</strong></td> 
          <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Wed</strong></td> 
          <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Thu</strong></td> 
          <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Fri</strong></td> 
          <td align="center" bgcolor="#2561cf" style="color:#FFFFFF"><strong>Sat</strong></td> 
         </tr>'; 
    ?> 
         <?php 
          $timestamp = mktime(0,0,0,$cMonth,1,$cYear); 
          $maxday = date("t",$timestamp); 
          $thismonth = getdate ($timestamp); 
          $startday = $thismonth['wday']; 

          for ($i=0; $i<($maxday+$startday); $i++) { 
          $day = ($i - $startday + 1); 
          if($day['1'] == '1' || $day['1'] == '2' || $day['1'] == '3' || $day['1'] == '4' || $day['1'] == '5' || $day['1'] == '6' || $day['1'] == '7' || $day['1'] == '8' || $day['1'] == '9'){ 
           $day = '0'.$day; 
          }else{ 
           $day = $day; 
          } 
          $date = $monthNames[$cMonth-1].' '.$day.', '.$cYear; 
          $date2 = $cMonth.'/'.$day.'/'.$cYear; 
          $events = $this->getEvents($date2); 
          if(($i % 7) == 0) echo "<tr>\n"; 
          if($i < $startday) echo "<td></td>\n"; 
          $var.= "<td valign='top' align='left' width='50px' height='50px'><div class='".$dateId."' id='".$date."' title='".$date2."' style='cursor:pointer;'>". ($i - $startday + 1) .'</div>'. $events."</td>\n"; 

if(($i % 7) == 6) 
$var.="</tr>\n"; 
          } 

        $var.=' </table> 
        </td> 
       </tr> 
      </table>'; 

    ?> 

最终结果是是$ var