我对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>"; */
}
}
答案 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);