【问题标题】:PHP | String to Int conversion goes wrongPHP | String 到 Int 转换出错
【发布时间】:2023-01-08 02:55:49
【问题描述】:

你好我亲爱的编码朋友。 我有一个时间,格式如下 08:00:00。那个时间来自我的 phpMyAdmin 数据库,其中我有一个“时间”字段,我通过在我的 php 代码中使用查询来获取该字段。包含时间的 mysqli 变量的变量类型是字符串,所以我想去掉分和秒部分,然后通过添加 (int) 将其余部分变成整数。代码如下所示:Image of code

if (strpos ($meetings["dtStartZeit"], "0") == 0) {
                            
    $startTimeString = substr ($meetings["dtStartZeit"], 1, 1);
                            
} else {
                        
    $startTimeString = substr ($meetings["dtStartZeit"], 0, 2);
                            
}
                        
$startTimeNumber = (int)$startTimeString;

现在是令人困惑的部分。如果我有一个像这样的字符串 --> "8" 并且我想通过使用上述函数将它变成一个整数,结果是 9 而不是 8。更令人困惑的部分是如果我增加值该变量乘以 1,结果为 8。

有人可以向我解释一下吗?

【问题讨论】:

  • 请将代码作为文本:)

标签: php sql string type-conversion integer


【解决方案1】:

你不需要在这里使用strpossubstr。使用单行类型转换而不是所有代码:

$startTimeNumber = (int) $meetings['dtStartZeit']; // "08:00:00" --> 8 

【讨论】:

    【解决方案2】:

    要将字符串转换为 int,请使用 intval()

    因为字符串是字符转换的对象,所以它们永远不会起作用,这就是(int)正在做的

    【讨论】:

    • “转换它们永远不会起作用”,这是错误的,您绝对可以将 string 转换为 int,这取自 PHP Docs:“如果字符串是 numeric 或前导数字,则它将解析为相应的整数值,否则转换为零 (0)。”在示例 echo (int) "27test"; 中,返回值 27,确认转换确实有效。
    猜你喜欢
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多