-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() ループを約 1 日間機能させようとしています...何が間違っていますか?

4

4 に答える 4

1

$node 配列を while ループの外側で次のように定義してみてください。

$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 に答える