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

如果我为 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 对它们不起作用呢?



撒科打诨
浏览 155回答 1
1回答

素胚勾勒不出你

在你的代码中我看到while($row3=sqlsrv_fetch_array( $stmt3, SQLSRV_FETCH_ASSOC)){&nbsp; $variablename='idopont'.$c;&nbsp; $$variablename= $row3['TIMEPART']."<br>"; // Specially this one&nbsp; echo $variablename.'<br>';&nbsp; echo $$variablename.'<br>';&nbsp; $belep[$c]=$$variablename; // And this one&nbsp; $c++;}如果您看到我突出显示的 2 行,则您是<br>在从数据库中提取的日期后附加 a (假设这是数据库上的日期)。所以,假设你2019-08-17现在拥有它2019-08-17<br>,那不是一个有效的日期。我会做的(保持相同的代码结构)是:while($row3=sqlsrv_fetch_array( $stmt3, SQLSRV_FETCH_ASSOC)){&nbsp; $variablename='idopont'.$c;&nbsp; $$variablename= $row3['TIMEPART']; // I removed <br> from here&nbsp; echo $variablename.'<br/>';&nbsp; echo $$variablename.'<br/><br/>';&nbsp; $belep[$c]=$$variablename;&nbsp; $c++;}希望这可以帮助。
打开App,查看更多内容
随时随地看视频慕课网APP