Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/228.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何将函数结果收集到一个数组中并返回此数组?_Php_Mysql - Fatal编程技术网

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"

我的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");
    $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