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

时间:2010-01-09 11:55:46

标签: php mysql arrays loops

平台:

PHP,mySQL

我有什么:

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

我在做什么:

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

示例:

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

PHP QUERY:

$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

提前谢谢。

2 个答案:

答案 0 :(得分:3)

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

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

......你应该好好去。 (目前,您每次都将内容附加到单个字符串中。)

顺便说一句,我认为这些数据“已知良好”,因为您似乎根本没有输出它。 (跨站点脚本编写很糟糕,等等。)

答案 1 :(得分:3)

虽然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']
}