-1

我正在尝试从数据库动态地将新数组添加到现有数组中,但我的循环仅添加 mysql_fetch_row 中的最后一行。我认为它实际上是在覆盖同一个数组。

PHP 代码

<?php
$con = require_once('./dbconnect.php');

global $con;
mysql_select_db("packages", $con);
$packages = mysql_query("SHOW TABLES FROM packages");

while($row = mysql_fetch_row($packages)){
    $node = array();

    foreach($row as $key2 => $value2){
        $node[$row[0]] = array("Item1" => "Other dynamic Info here");
    }
}

print_r($node);

mysql_close($con);
?>

输出如下:

Array
(
    [Pack1] => Array
        (
            [Item1] => Other dynamic Info here
        )

)

它应该输出:

Array
(
    [Pack1] => Array
        (
            [Item1] => Other dynamic Info here
        )

)
Array
(
    [Pack2] => Array
        (
            [Item2] => Other dynamic Info here
        )

)

我一直试图让这个 foreach() 循环工作大约一天......我做错了什么?

4

4 回答 4

1

尝试将 while 循环外的 $node 数组定义为:

$node = array(); ## <-- HERE

while ($row = mysql_fetch_row($packages))
{    
    foreach ($row as $key2 => $value2) 
    {
        $array      = array("Item1" => "Other dynamic Info here");
        $key        = $row[0];
        $node[$key] = $array;
    }
}

您还可以使用它var_dump来调试您的代码,以便在出现问题时更快地发现。

于 2012-11-07T15:49:54.077 回答
0

应该

foreach($row as $key2 => $value2){
    $node[$key2] = array("Item1" => "Other dynamic Info here");
}
于 2012-11-07T15:48:27.717 回答
0

宣布

$node = array();

在while循环之外。

如果节点数组的索引无关紧要,您可以使用“附加”表示法

foreach($row as $key2 => $value2){
    node[] = array("Item1" => "Other dynamic Info here");
}
于 2012-11-07T15:49:01.307 回答
0

您正在通过while循环在每个循环中覆盖数组,但仅在最后一个循环后输出数组一次。您的代码应如下所示(注意 的位置print_r):

<?php
$con = require_once('./dbconnect.php');

global $con;
mysql_select_db("packages", $con);
$packages = mysql_query("SHOW TABLES FROM packages");

while($row = mysql_fetch_row($packages)){
    $node = array();

    foreach($row as $key2 => $value2){
        $node[$row[0]] = array("Item1" => "Other dynamic Info here");
    }
    print_r($node);
}

mysql_close($con);
?>

这将在循环的每个循环中输出数组while

于 2012-11-07T15:53:42.127 回答