簡體   English   中英

減少Foreach嵌套並替換為While循環?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM