Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 我在数组中插入了一个逻辑错误_Php_Sql Server_Arrays - Fatal编程技术网

Php 我在数组中插入了一个逻辑错误

Php 我在数组中插入了一个逻辑错误,php,sql-server,arrays,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 = $Fr

我对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>"; */

}
    }
while($Frow=sqlsrv\u fetch\u数组($Fstmt,sqlsrv\u fetch\u ASSOC)){
$R1=$Frow['EmpID'];
$R2=$Frow['DATE']->格式('Y-m-d');
$R3=$Frow['TIME']->格式('H:i:s');
$R4=$Frow['OBJECT'];
如果($R4==1112或$R4==2222)
{
/*$logout=数组($R3”);
$count=计数($logout);

对于($x=0;$x),这是因为:

$logout=array();

您每次都将其重新初始化为新数组。这就是为什么您的值会被打印,但不会与before一起打印。请在
while
循环之前声明该语句


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

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

$logout[] = $R3;

循环结束后打印($logout)
。由于@I可以吃奶酪汉堡,请在while循环之前声明
$logout
数组。

您应该根据逻辑在while循环之前声明
$logout=array();
或者为循环声明


出现此问题是因为在for循环中声明了
$logout
,并且每次循环迭代时都会重新初始化它。

有几个错误:

在守则中:

     $logout = array();
    $count = count($logout);
    for ($x=0 ; $x<=$count; $x++){
    //$logout = array($R3);
    $logout[$x] = $R3;
    //print_r ($logout); 
    }
    print_r ($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);