gpt4 book ai didi

php - 减少 Foreach 嵌套并替换为 While 循环?

转载 作者:行者123 更新时间:2023-11-30 23:24:28 27 4
gpt4 key购买 nike

我目前有一个 MySQL 脚本在 while 循环 中运行,如下所示:

$Query = mysql_query("SELECT * FROM appointments");
while ($Rows = mysql_fetch_array($Query))
{
...
}

这会将单行作为数组返回,我可以根据需要对其进行操作,例如:

if ($Rows['Reoccour'] == 1)
{
$NextDate = date('o-m-d', strtotime($Rows['Date'] . " +" . $Rows['howfar'] . " weeks"));
if ($NextDate < date('o-m-d'))
{
mysql_query("UPDATE appointments SET Date='$NextDate' WHERE ID='{$Rows['ID']}'");
}
}

这将放在 while 循环中,这样我就可以使用数组本身了。但是我想迁移到 PDO,我在获取我想要的 array 格式时遇到了问题:

这是我的代码:

$Query = $dbh->prepare("SELECT * FROM appointments");
$Query->execute();
$Results = $Query->fetchAll();
print_r($Results);

这会产生一个多维数组,如下所示:

Array ( 
[0] => Array (
[ID] => 1
[0] => 1
[Appointment] => JCP Lucy
[1] => JCP Lucy
[Date] => 2012-12-21
[2] => 2012-12-21
[Location] => Grays JCP
[3] => Grays JCP
[Reoccour] => 1
[4] => 1
[howfar] => 1
[5] => 1
)

[1] => Array (
[ID] => 3
[0] => 3
[Appointment] => JCP Sign On
[1] => JCP Sign On
[Date] => 2012-12-14
[2] => 2012-12-14
[Location] =>
JCP Grays
[3] => JCP Grays
[Reoccour] => 1
[4] => 1
[howfar] => 2
[5] => 2 )

)

我想做的是让 $Results = $Query->fetchAll(); 在像我使用时使用的 while 循环 这样的设置中MySQL 函数。

如果我想将数组缩减为单个字符串,我将不得不做类似的事情:

foreach ($Results AS $results)
{
foreach ($results AS $result)
{
echo "{$result} <br>";
}
}

但这会返回:

1
JCP Lucy
JCP Lucy
2012-12-21
2012-12-21
Grays JCP
Grays JCP
1
1
1
1
3
3
JCP Sign On
JCP Sign On
2012-12-14
2012-12-14
JCP Grays
JCP Grays
1
1
2
2

其中有重复值。我的问题是:

1) 删除重复值

2) 在使用我的 PDO Api 时执行一个 while 循环 -- 但是使我能够像完成 mysql_fetch_array 函数时那样使用数组键。

最佳答案

我相信您正在寻找要传递给 fetchAll() 的选项 PDO::FETCH_ASSOC :

$Query->fetchall(PDO::FETCH_ASSOC);

PDO::FETCH_ASSOC 给你

results = array(
[0] => array(
'column' => 'value',
'column' => 'value',
...
),
[1] => array(
...
},
...
);

然后您可以对其进行迭代。

关于php - 减少 Foreach 嵌套并替换为 While 循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13993137/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com