0
echo '<table border=\'0\' cellpadding=\'0\' cellspacing=\'0\'>';

for ($y=$startY;$y<$startY+$fieldHeight;$y++) {
    echo '<tr>';
    for ($x=$startX;$x<$startX+$fieldWidth;$x++) {
        //echo '(' . $x . ',' . $y . ')';
        echo '<td><img src=\'tiles/' . (isset($map[$x][$y]['terrain']) ? $map[$x][$y]['terrain'] : 'water') . '.png\' alt=\'\' /></td>';
    }
    echo '</tr>';
}

echo '</table>';

此数据将通过 jQuery 调用进行更新。我只是在寻找一种简单的方法来将上面的输出存储在一个变量中。我怎样才能做到这一点?

4

4 回答 4

3
ob_start();
// echo what you want
$content = ob_get_contents();
ob_end_clean();

ob_get_contents()的参考;

于 2012-06-10T18:31:09.847 回答
1

输出缓冲:

ob_start();
// your code
$data = ob_end_clean();
于 2012-06-10T18:31:23.040 回答
0

我相信几天前我回答了一个非常相似的问题。为什么不把所有东西都分配给一个变量然后echo呢?

$output = '<table border=\'0\' cellpadding=\'0\' cellspacing=\'0\'>';

for ($y=$startY;$y<$startY+$fieldHeight;$y++) {
    $output .= '<tr>';
    for ($x=$startX;$x<$startX+$fieldWidth;$x++) {
        //echo '(' . $x . ',' . $y . ')';
        $output .= '<td><img src=\'tiles/' . (isset($map[$x][$y]['terrain']) ? $map[$x][$y]['terrain'] : 'water') . '.png\' alt=\'\' /></td>';
    }
    $output .= '</tr>';
}

$output .= '</table>';

echo $output;
于 2012-06-10T18:30:57.210 回答
0

不要使用 echo,而是使用字符串连接或输出缓冲系统:

例如

$var = '<table ....';
for (...) {
   $var .= '<td> ....';
}
$var .= '</table>';
     ^^--- string concatenation shorthand, equivalent to $var = $var . '<table...';

或者

ob_start();
...your code here...
$var = ob_end_clean();
于 2012-06-10T18:31:08.787 回答