插入数组时出现逻辑错误

时间:2014-03-19 05:56:04

标签: php sql-server arrays

我对php不是很熟悉,所以我因此问了很多问题。我从数据库中获取值后尝试将多个值插入到$ logout数组变量中,但是当我运行代码时,我得到了两个数组,每个数组都有一个值:

数组([0] => 10:05:02)数组([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>"; */

}
    }

4 个答案:

答案 0 :(得分:1)

这是因为:

$logout = array();

每次都将它重新初始化为新数组。这就是为什么你的价值被印刷而不是与之前一起的原因。在while循环之前声明该声明。

你内部也不需要for循环,正如@Rikesh所说的那样,使用[]来获得自动递增的索引。

答案 1 :(得分:1)

我猜你的上部循环每次运行时$x都可以为0,所以只需将该行更改为,

$logout[] = $R3;

循环结束后print_r($logout);。正如@I Can Has Cheezburger said,在你的while循环之前声明你的$logout数组。

答案 2 :(得分:0)

根据您的逻辑,您应该在> 之前 <循环 for循环之前声明$logout = array();

您遇到了问题,因为在for循环中声明了$logout,并且每次循环迭代都会重新初始化。

答案 3 :(得分:0)

有几个错误:

在代码中:

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

您将变量$ 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);