代码之家  ›  专栏  ›  技术社区  ›  Devner

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

  •  2
  • Devner  · 技术社区  · 15 年前

    平台:

    PHP、MySQL

    我所拥有的:

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

    我想做的是:

    我正试图在一个循环中拉出所有数据行,直到达到记录提取限制。我想将这些结果分配给另一个数组(在循环中),这样我就可以通过循环外的这个新数组访问这些值。我需要 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
    

    提前谢谢。

    2 回复  |  直到 15 年前
        1
  •  3
  •   John Parker    15 年前

    如果将php查询位更改为…

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

    …你该走了。(现在,您每次都将内容附加到一个字符串中。)

    顺便说一句,我假设这个数据是“已知良好的”,因为您似乎根本没有从输出中转义出来。(跨站点脚本编写错误等)

        2
  •  3
  •   Community kfsone    7 年前

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