如何在循环时生成mysql_fetch_数组的php数组
目前,我有大量的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
$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())代码>构造。您不应该在生产环境中显示
(或它的PDO/MySQLi等价物)的结果,如果您必须进行调试,请确保随后立即将其从代码中删除mysql_error()
- 不要将
直接用作循环条件。这是非常低效的,你唯一应该做的是如果你的数组的大小在循环过程中可能会改变。您应该在循环之前调用一次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);