如何在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>
答
很可能只是尝试拼接的只是把你的代码的函数里面的循环。例如,
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
?>
答
尝试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
你能解释一下这个问题吗? – Blender 2012-03-16 05:56:22
我在这里看到很多冗余代码。 – jerrymouse 2012-03-16 05:57:01
不需要'else {day} $ day = $ day; }' – jerrymouse 2012-03-16 05:57:36