【问题标题】:php : A non well formed numeric value encounteredphp : 遇到格式不正确的数值
【发布时间】:2013-05-05 15:18:35
【问题描述】:

我试图让用户年龄,我得到了正确的输出,但在我的 html 页面中有警告

错误:

A PHP Error was encountered
Severity: Notice
Message: A non well formed numeric value encountered
Filename: controllers/users.php
Line Number: 45

我使用的代码是:

$now = time();
$data['dob'] =  strftime('%Y', $now)-strftime('%Y',$query['dob']);   //it should be showig user age

上面显示的错误可能是什么原因,请帮助

【问题讨论】:

    标签: php codeigniter


    【解决方案1】:

    strftime 返回一个字符串,你必须在减法之前将它转换为数字。

    编辑:看到下面的评论,你不能减去,因为dobtime() 返回的格式不同。所以,按照上面的段落进行。

    EDIT2:减去两个日期的最简洁方法是DateTime

    【讨论】:

    • 你能用几个代码解释你的答案吗,因为我不明白你的句子。
    • So, proceed as in the paragraph above. 哪一段?这个strftime('%Y',$query['dob']) 是字符串格式,我怎样才能把它转换成正确的格式来得到正确的输出?
    • 因为我认为dob 不是。
    • "你必须在减法之前将其转换为数字",所以要么将 (int) 放在每个 strftime 调用的前面,如 (int) strftime(…) 或将它们包装到对 intval 的调用中.或者使用 DateTime(更好)。
    【解决方案2】:

    我将字符串转换为 int ,并减去该值以获得我的输出

    $userdob=(int)$query['dob']; $data['dob'] = strftime('%Y', $now)- strftime('%Y',$userdob);

    【讨论】:

      【解决方案3】:

      这可能是因为 $query['dob'] 包含的不是整数。

      strftime() 期望它的第二个参数是一个时间戳(即一个 unix-timestamp,一个表示经过 epoch 的秒数的整数)。如果我不得不猜测,我猜你 $query['dob'] 包含某种字符串。

      【讨论】:

      • 可能是因为我提供了来自 jquery 日期选择器的 dob,它以这种格式存储我的日期 1949-05-11 。那我该怎么解决这个问题呢?
      • 你能用代码解释一下吗?因为你的回答超出了我的想象
      猜你喜欢
      • 2013-05-27
      • 2010-11-19
      • 1970-01-01
      • 1970-01-01
      • 2019-02-15
      • 2012-07-28
      • 2014-09-18
      相关资源
      最近更新 更多