为了账号安全,请及时绑定邮箱和手机立即绑定

strtotime 将错误结果返回给数组中的字符串

strtotime 将错误结果返回给数组中的字符串

PHP
撒科打诨 2021-11-26 17:45:42
如果我为 strtotime 定义了一个字符串数组,它工作正常,但是如果我从 sql 查询相同的字符串数组,它不会显示任何内容,这意味着结果为假。这是工作正常的代码:$belep=array('5:19:28','9:20:03','12:01:43','15:55:55');for($i=0;$i<count($belep);$i++){    $belep[$i]=strtotime($belep[$i]);    echo $belep[$i].'<br>';}$sum=0;for($j=1;$j<count($belep);$j+=2){    $sum=$sum+($belep[$j]-$belep[$j-1]);}echo "Munkában töltött idő: ".gmdate("H:i:s", $sum);这就是我得到错误结果的地方:$belep=array();$stmt3 = sqlsrv_query( $conn, $sql4 );if( $stmt3 === false) {    die( print_r( sqlsrv_errors(), true) );}$c=0;while($row3=sqlsrv_fetch_array( $stmt3, SQLSRV_FETCH_ASSOC)){    $variablename='idopont'.$c;    $$variablename= $row3['TIMEPART']."<br>";    echo $variablename.'<br>';    echo $$variablename.'<br>';    $belep[$c]=$$variablename;    $c++;}for($i=0;$i<count($belep);$i++){    $belep[$i]=strtotime($belep[$i]);    echo $belep[$i].'<br>';}$sum=0;for($j=1;$j<count($belep);$j+=2){    $sum=$sum+($belep[$j]-$belep[$j-1]);}echo "Munkában töltött idő: ".gmdate("H:i:s", $sum);sqlsrv_free_stmt( $stmt3);如果我在第二个示例中回显数组,则会得到与第一个示例中相同的字符串结果。如果我检查数组元素的类型,结果是字符串。那么为什么 strtotime 对它们不起作用呢?
查看完整描述

1 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

在你的代码中我看到


while($row3=sqlsrv_fetch_array( $stmt3, SQLSRV_FETCH_ASSOC)){

  $variablename='idopont'.$c;

  $$variablename= $row3['TIMEPART']."<br>"; // Specially this one

  echo $variablename.'<br>';

  echo $$variablename.'<br>';

  $belep[$c]=$$variablename; // And this one

  $c++;

}

如果您看到我突出显示的 2 行,则您是<br>在从数据库中提取的日期后附加 a (假设这是数据库上的日期)。所以,假设你2019-08-17现在拥有它2019-08-17<br>,那不是一个有效的日期。我会做的(保持相同的代码结构)是:


while($row3=sqlsrv_fetch_array( $stmt3, SQLSRV_FETCH_ASSOC)){

  $variablename='idopont'.$c;

  $$variablename= $row3['TIMEPART']; // I removed <br> from here

  echo $variablename.'<br/>';

  echo $$variablename.'<br/><br/>';

  $belep[$c]=$$variablename;

  $c++;

}

希望这可以帮助。


查看完整回答
反对 回复 2021-11-26
  • 1 回答
  • 0 关注
  • 152 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信