2014-03-19 36 views
0

我對PHP不太熟悉,所以我因此提出了很多問題。我試圖從數據庫中獲取值後插入多個值到$ logout數組變量,但是當我運行代碼時,我得到兩個數組,每個都有一個值:我有一個邏輯錯誤,插入到數組中

Array([0] => 10 :05:02)Array([0] => 15:03:30)

我需要它們在單個數組中,我不知道我的代碼出了什麼問題,任何人都可以幫助我點。這是我的PHP陣列塊代碼:

while($Frow = sqlsrv_fetch_array($Fstmt, SQLSRV_FETCH_ASSOC)) { 

    $R1 = $Frow['EmpID']; 
    $R2 = $Frow['DATE']->format('Y-m-d'); 
    $R3 = $Frow['TIME']->format('H:i:s'); 
    $R4 = $Frow['OBJECT']; 


    if ( $R4 == 1112 or $R4 == 2222) 
    { 

     /*$logout = array ("$R3"); 
     $count = count($logout); 
     for ($x=0 ; $x<=$count; $x++){ 
     print_r ($logout[$x]); 
     }*/ 

     $logout = array(); 
     $count = count($logout); 
     for ($x=0 ; $x<=$count; $x++){ 
     //$logout = array($R3); 
     $logout[$x] = $R3; 
     //print_r ($logout); 
     } 
     print_r ($logout); 


     /*$logout = array("$R3"); 
     foreach($logout as $key=>$value) { 
     $logout = array($value); 
     //print $value; 
     ECHO "</BR>"; 
     print_r ($logout); 
     ECHO "</BR>"; */ 

} 
    } 

回答

0

那麼有幾個錯誤:

在代碼:

 $logout = array(); 
    $count = count($logout); 
    for ($x=0 ; $x<=$count; $x++){ 
    //$logout = array($R3); 
    $logout[$x] = $R3; 
    //print_r ($logout); 
    } 
    print_r ($logout); 

聲明變量$註銷的值是一個數組,然後變量$ count的值將始終爲0。

爲了達到您的目的,您應該在wile循環的外部和之前聲明變量$ logout,然後在結尾添加新值。

嘗試:

$logout = arary(); 

while($Frow = sqlsrv_fetch_array($Fstmt, SQLSRV_FETCH_ASSOC)) { 

$R1 = $Frow['EmpID']; 
$R2 = $Frow['DATE']->format('Y-m-d'); 
$R3 = $Frow['TIME']->format('H:i:s'); 
$R4 = $Frow['OBJECT']; 


if ( $R4 == 1112 or $R4 == 2222) 
{ 
    $logout[] = $R3; 
} 

} 

    print_r ($logout); 
+0

謝謝楊,我明白你說什麼,希望不要再次墜入了同樣的錯誤,你的解決方案解決了我的問題, 再次感謝。 –

+0

不客氣,我們都從初學者開始。 – Yang

1

那是因爲這個:

$logout = array();

您重新初始化它作爲一個新的陣列每次。這就是爲什麼你的價值正在打印,但沒有與以前一起。在while循環之前聲明該聲明。

此外,您並不需要for環路,正如@Rikesh所說,使用[]可以獲得自動遞增的索引。

1

我猜你$x可以是0你的上循環每次運行,所以只是把上面一行,

$logout[] = $R3; 

而且print_r($logout);循環結束後。作爲@I可以有Cheezburger said,在while循環之前聲明您的$logout數組。

0

你應該申報$logout = array();要麼以前while循環for循環按你的邏輯。

您有問題,因爲$logout在for循環中聲明,每次循環迭代時都會重新初始化它。

+0

謝謝你,我宣佈它的循環之外,它的工作 –