【问题标题】:PHP intval() returns 0PHP intval() 返回 0
【发布时间】:2016-10-04 05:58:41
【问题描述】:

这可能看起来微不足道,但 intval() 在以下情况下返回 0:

$window_width = "<script type='text/javascript'>document.write(window.innerWidth);</script>";
$window_width2 = intval($window_width);
echo $window_width2; 

$window_width 将是 "1366"

$window_width2 将是 0

我需要 $window_width2integer,而不是 string

【问题讨论】:

  • intval — Get the integer value of a variable,请在此处查看> php.net/manual/en/function.intval.php 并且您的$window_width 不包含整数值
  • 您还会发现您将客户端脚本与服务器端执行混合在一起。例如,window.innerWidth 将在页面呈现后可用,之后 php 已经完成了一段时间。因此,它无法使用该值,而只能使用 ajax 之类的东西,以及不太理想的数据库。
  • intval 返回整数值。它不会将字符串转换为整数
  • @OwaisArain - 你误会了它会将字符串转换为整数,例如intval('1') 确实会变成1 但是&lt;script&gt;&lt;/script&gt; 不是数字,然后变成0
  • 我想我已经掌握了窍门。非常感谢!

标签: javascript php string integer


【解决方案1】:

$window_width 持有一个string(不是window.innerWidth),它不能转换为string,因此返回了0

PHPsever 上执行(在JavaScript 执行之前的方式)因此不可能通过PHP 访问window.innerWidth,使用AJAX 通过PHP 发出该数据。

The integer value of var on success, or 0 on failure.

字符串很可能返回 0,尽管这取决于字符串最左边的字符。 integer casting 的通用规则适用。

【讨论】:

    【解决方案2】:

    $window_width 不能是 1366,因为你正在混合 PHP 和 Javascript。

    PHP 在服务器端执行,而 JS 在用户端。这意味着您不能只在 PHP 中使用来自 JS 的值。

    【讨论】:

    • 对我来说是 1366。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-17
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多