PHP - 在while循环中分配值并在循环外单独访问它们

Posted

技术标签:

【中文标题】PHP - 在while循环中分配值并在循环外单独访问它们【英文标题】:PHP - Assigning values in a while loop and Accessing them individually outside the loop 【发布时间】:2011-01-03 05:51:51 【问题描述】:

平台:

phpmysql

我有什么:

我有一个数据库表。在我的应用程序中,我能够获取所有行。当我查询数据库时,我已经动态设置了记录获取限制。

我想做什么:

我试图在循环中提取所有数据行,直到达到记录获取限制。我想将这些结果分配给另一个数组(在循环中),以便我可以在循环外通过这个新数组访问这些值。我需要 PHP 代码 来执行此操作。我希望能够在 Javascript 中应用相同的编码逻辑。这可能吗?

示例:

//TABLE STRUCTURE
fname   lname    city
Ed       Al      SA
Bob     B       MN
Chris     V       KJ

PHP 查询:

$result = mysql_query("SELECT fname, lname, city FROM table LIMIT 3");

while( $row = mysql_fetch_array($result) )     

        $new_rows_data['fname'] .= $row['fname'];
        $new_rows_data['lname'] .= $row['lname'];
        $new_rows_data['city']  .= $row['city'];
    

期望的输出:

echo $new_rows_data['fname'][0].'   '.$new_rows_data['lname'][0].'   '.$new_rows_data['city'][0].
//Want the above to show: Ed        Al      SA
echo $new_rows_data['fname'][1].'   '.$new_rows_data['lname'][1].'   '.$new_rows_data['city'][1].
//Want the above to show: Bob       B       MN
echo $new_rows_data['fname'][2].'   '.$new_rows_data['lname'][2].'   '.$new_rows_data['city'][2].
//Want the above to show: Chris     V       KJ

提前谢谢你。

【问题讨论】:

【参考方案1】:

如果您将 PHP 查询位更改为...

$new_rows_data['fname'][] = $row['fname'];
$new_rows_data['lname'][] = $row['lname'];
$new_rows_data['city'][]  = $row['city'];

...你应该很高兴。 (目前,您每次都将内容附加到一个字符串中。)

顺便说一句,我认为这些数据是“已知良好的”,因为您似乎根本没有输出转义它。 (跨站脚本不好等)

【讨论】:

感谢您的回答。关于如何使用 $.each 函数在 jQuery 中实现相同的任何想法? @middaparka 感谢您的安全警报。当我直接从数据库中获取数据时,我还需要转义它吗?如果是这样,你能告诉我怎么做吗?非常感谢! 一般来说,将数据放入数据库时​​使用mysql_real_escape_string,输出时使用htmlentities。也就是说,这是一个很深的话题 - 请参阅 ***.com/questions/71328/…【参考方案2】:

虽然middaparka's 的回答是对的,但是在进入while循环之前一定要先声明各个新数组:

$result = mysql_query("SELECT fname, lname, city FROM table LIMIT 3");

$new_rows_data['fname'] = array();
$new_rows_data['lname'] = array();
$new_rows_data['city'] = array();
while( $row = mysql_fetch_array($result) ) 
    // the following (two brackets []), automatically pushes a value on the end of the array
    $new_rows_data['fname'][] = $row['fname'];
    $new_rows_data['lname'][] = $row['lname'];
    $new_rows_data['city'][]  = $row['city']

【讨论】:

+1 他说的是实话。虽然 PHP 将允许您进行“延迟初始化”,但在使用之前定义事物是一种很好的做法。

以上是关于PHP - 在while循环中分配值并在循环外单独访问它们的主要内容,如果未能解决你的问题,请参考以下文章

如何在循环中添加 Thymeleaf 变量中的值并在完成循环后显示最终值

Python:提取唯一索引值并在循环中使用它们

C++ While循环不重新分配字符串值

while循环中的breakcontinue和else

回显值并在循环内加在一起以形成总数[重复]

如何比较两个for循环的值并在django模板中使用if语句?