如何在循环时生成mysql_fetch_数组的php数组

如何在循环时生成mysql_fetch_数组的php数组,php,mysql,arrays,loops,while-loop,Php,Mysql,Arrays,Loops,While Loop,目前,我有大量的php文件,每个文件都有以下格式的数组语句: $array1 = array ( array ( 'Husband' => 'bob', 'Wife' => 'ann' ), array ( 'Husband' => 'fred', 'Wife' => 'donna' ), arra

目前,我有大量的php文件,每个文件都有以下格式的数组语句:

$array1 = array ( array ( 'Husband' => 'bob',
                          'Wife' => 'ann' ),
                  array ( 'Husband' => 'fred',
                          'Wife' => 'donna' ),
                  array ( 'Husband' => 'john',
                          'Wife' => 'mary' ) ); 
当然,这会从
print\r($array1)
输出(A)返回:

在单独的类文件中,我使用以下语句访问$array1数据:

for ($col = 0; $col < sizeof($array1); $col++)
{
  echo $array[$col]['Wife']."<br />";
}
然后我从PHP访问这个MySQL数据库:

$sql = "SELECT * FROM `database`.`arrays`";
$link  = mysql_connect ('localhost', 'username', 'password' ) or die(mysql_error());
mysql_select_db ('database', $link) or die(mysql_error());
$result = mysql_query ($sql) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
  $array2 = array ( 'Husband' => $row['husband'],
                    'Wife' => $row['wife'] );
  print_r ($array2);
}
这将产生如下输出(B):


我的问题是如何在循环时为mysql_fetch_数组创建一个php数组,使输出B看起来像输出a。我希望能够继续以
$array[$col]['Wife']
的方式访问类文件中的数据,但要从mysql数据库中访问。

这里需要做的就是推送
mysql_fetch_数组()返回的数组
使用
[]
安装到更大的阵列上:

$MultiDimArray = array();

while($row = mysql_fetch_array($result))
{
  $MultiDimArray[] = array ( 'Husband' => $row['husband'], 'Wife' => $row['wife'] );
}

print_r($MultiDimArray);
现在,有几点评论:

  • 请不要使用扩展名
    mysql.*
    编写新代码,而是使用或
  • 使用和而不是
    mysqli\u fetch\u array()
    ,除非您明确需要数字索引键和关联键
  • 如果以与代码中键相同的方式命名列(包括大写),只需将
    mysqli\u fetch\u assoc()
    的返回值推送到数组中即可
例如:

while ($MultiDimArray[] = mysql_fetch_assoc($result)) continue;
  • 不要使用
    或死亡(mysql_error())构造。您不应该在生产环境中显示
    mysql_error()
    (或它的PDO/MySQLi等价物)的结果,如果您必须进行调试,请确保随后立即将其从代码中删除
  • 不要将
    sizeof($array1)
    直接用作循环条件。这是非常低效的,你唯一应该做的是如果你的数组的大小在循环过程中可能会改变。您应该在循环之前调用一次
    sizeof()
    ,将结果存储在变量中,并将
    $col
    与该变量进行比较
例如:

for ($col = 0, $size = sizeof($array1); $col < $size; $col++)
{
  echo $array1[$col]['Wife']."<br />";
}

// Also, don't forget you could simply do this:
foreach ($array1 as $row)
{
  echo $row['Wife']."<br />";
}
for($col=0,$size=sizeof($array1);$col<$size;$col++)
{
echo$array1[$col][‘妻子’]。“
”; } //此外,不要忘记,您可以简单地执行以下操作: foreach($array1作为$row) { echo$row[“妻子”]。“
”; }
尝试以这种方式更改代码

$array2 = array();
$sql = "SELECT * FROM `database`.`arrays`";
$link  = mysql_connect ('localhost', 'username', 'password' ) or die(mysql_error());
mysql_select_db ('database', $link) or die(mysql_error());
$result = mysql_query ($sql) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
  $array2[] = array ( 'Husband' => $row['husband'],
                    'Wife' => $row['wife'] );
}

print_r ($array2);

我相信这就是你想要的结果

也许可以尝试以下方法:

while($row = mysql_fetch_array($result))
{
  $temparray = array ( 'Husband' => $row['husband'],
                    'Wife' => $row['wife'] );
  array_push($array2, $temparray);
}

print_r ($array2);

请不要称你的桌子为“数组”,这是一种糟糕的做法。它应该更能描述您正在存储的对象。我想如果您一次只添加一个变量,$array2[]会更好。非常感谢您的解决方案和富有洞察力的建议。我是一个更好的程序员!
for ($col = 0, $size = sizeof($array1); $col < $size; $col++)
{
  echo $array1[$col]['Wife']."<br />";
}

// Also, don't forget you could simply do this:
foreach ($array1 as $row)
{
  echo $row['Wife']."<br />";
}
$array2 = array();
$sql = "SELECT * FROM `database`.`arrays`";
$link  = mysql_connect ('localhost', 'username', 'password' ) or die(mysql_error());
mysql_select_db ('database', $link) or die(mysql_error());
$result = mysql_query ($sql) or die(mysql_error());
while($row = mysql_fetch_array($result))
{
  $array2[] = array ( 'Husband' => $row['husband'],
                    'Wife' => $row['wife'] );
}

print_r ($array2);
while($row = mysql_fetch_array($result))
{
  $temparray = array ( 'Husband' => $row['husband'],
                    'Wife' => $row['wife'] );
  array_push($array2, $temparray);
}

print_r ($array2);