Php 如何将函数结果收集到一个数组中并返回此数组?
我的php函数看起来是这样的Php 如何将函数结果收集到一个数组中并返回此数组?,php,mysql,Php,Mysql,我的php函数看起来是这样的 function generateTour ($lang, $db) { echo '<table border="0" cellpadding="0" cellspacing="0" width="100%">'; $title='title_'.$lang; $txt='txt_'.$lang; $result = $db->query("SELECT id, $title, $txt FROM 1_table"
function generateTour ($lang, $db)
{
echo '<table border="0" cellpadding="0" cellspacing="0" width="100%">';
$title='title_'.$lang;
$txt='txt_'.$lang;
$result = $db->query("SELECT id, $title, $txt FROM 1_table");
$count= $result->num_rows;
$i=1;
while($row=$result->fetch_object())
{
if($i%3==0) echo '<tr>';
echo '<td width="33%">
<div class="tour_item" style="background-image:url(core/content/img/pages/1/slide/'.$row->id.'.png)">
<div class="tour_item_title"><a href="?id='.$row->id.'">';
echo '</a></div><div class="tour_item_text"><a href="?id='.$row->id.'"></div>
</div>';
if($i==$count-1) echo '</td></tr>';
else if($i%3==0) echo '</td></tr><tr>';
$i++;
}
echo '</table>';
}
function generateTour($lang,$db)
{
回声';
$title='title.'$lang;
$txt='txt.'$lang;
$result=$db->query(“从1_表中选择id、$title、$txt”);
$count=$result->num\u行;
$i=1;
而($row=$result->fetch_object())
{
如果($i%3==0)回显“”;
回声'
';
如果($i==$count-1)回显“”;
如果($i%3==0)回显“”,则为else;
$i++;
}
回声';
}
正如你们所看到的,它一行一行地回显结果。不是一下子。我想将所有变量收集到一个数组中并返回这个数组。可能吗?怎么做
请不要发表关于安全漏洞的想法。。等等。我正在针对sql注入过滤$title,$txt
varibales。(我有一个可能的字段名数组。我的筛选函数每次都检查这些变量的值。)
是在数组中缓存结果集的绝对最基本的方法。您只需修改它来存储生成的html即可。尝试以下操作:
function generateTour ($lang, $db)
{
$output = '<table border="0" cellpadding="0" cellspacing="0" width="100%">';
$title='title_'.$lang;
$txt='txt_'.$lang;
$result = $db->query("SELECT id, $title, $txt FROM 1_table");
$count= $result->num_rows;
$i=1;
while($row=$result->fetch_object())
{
if($i%3==0)
{
$output .= '<tr>';
}
$output .= '<td width="33%">
<div class="tour_item" style="background-image:url(core/content/img/pages/1/slide/'.$row->id.'.png)">
<div class="tour_item_title"><a href="?id='.$row->id.'">
</a></div><div class="tour_item_text"><a href="?id='.$row->id.'"></div>
</div>';
if($i==$count-1)
{
$output .= '</td></tr>';
}
else if($i%3==0)
{
$output .= '</td></tr><tr>';
}
$i++;
}
$output .= '</table>';
return $output;
}
function generateTour($lang,$db)
{
$output='';
$title='title.'$lang;
$txt='txt.'$lang;
$result=$db->query(“从1_表中选择id、$title、$txt”);
$count=$result->num\u行;
$i=1;
而($row=$result->fetch_object())
{
如果($i%3==0)
{
$output.='';
}
$output.='
';
如果($i==$count-1)
{
$output.='';
}
如果($i%3==0),则为else
{
$output.='';
}
$i++;
}
$output.='';
返回$output;
}
编辑:
现在更容易阅读代码。此解决方案将所有内容放在一个变量中。您不需要数组。您可以使用and将所有输出缓冲到一个变量中,然后输出该变量,如下所示:
ob_start();
print "Hello"; // Prints to buffer instead of screen
$out = ob_get_clean(); // Contains: Hello
echo $out; // Prints: Hello
我想将整个函数的结果收集到一个数组中(包括所有回波),然后不做回波。分配给一个变量,并重复字符串合并。但是为什么要使用数组呢?如果您只处理一个大字符串,那么将该字符串填充到数组中是没有意义的。这就像把一个盒子放进盒子里一样。看一下童子军的解决方案。是否有任何方法可以减少此解决方案的代码?不,没有。生成HTML总是意味着您的代码将比HTML本身更大。+1对于那些字段名的白名单,您可能希望将它们括在bacticks`,以防万一。这是您的建议,兄弟。thx非常多您想收集哪些变量?您编写的“all”不是很具体。在将非数字字段数据注入html时,不要忘记使用
htmlspecialchars
对db中的数据进行转义。
ob_start();
print "Hello"; // Prints to buffer instead of screen
$out = ob_get_clean(); // Contains: Hello
echo $out; // Prints: Hello