[英]Reduce Foreach Nesting and Replace With a While loop?
我目前有一個MySQL腳本在while loop
運行,如下所示:
$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
Format時遇到了麻煩:
這是我的代碼:
$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();
在使用MySQL函數時使用的while loop
之類的設置中。
如果我想將數組簡化為單個字符串,則必須執行以下操作:
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 loop
-但是使我能夠像完成mysql_fetch_array
函數時一樣使用Array鍵。
我相信您正在尋找要傳遞給fetchAll()
的選項PDO::FETCH_ASSOC
:
$Query->fetchall(PDO::FETCH_ASSOC);
PDO::FETCH_ASSOC
給您
results = array(
[0] => array(
'column' => 'value',
'column' => 'value',
...
),
[1] => array(
...
},
...
);
然后可以進行迭代。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.