PHP中转换屏幕分辨率字符串为int时返回0的问题求助
解决PHP类中屏幕分辨率转换为整数失败的问题
你遇到的问题核心是服务器端PHP和客户端JavaScript的执行时机完全不同:
- 你在PHP构造函数里给
width/height赋值的是JS代码字符串,PHP运行时只会把这段字符串原封不动输出到浏览器,并不会执行它。 - 直接输出
width能看到分辨率,是因为浏览器拿到这段JS代码后执行了它,把结果渲染出来了,但PHP本身根本没拿到真实的分辨率数值——它手里的只是一段JS文本,用intval()转这种非数字开头的字符串,自然会得到0。
解决思路:让PHP拿到真实的分辨率数值
必须先在前端用JS获取屏幕分辨率,再把数值传递给PHP,PHP拿到具体数字后再做运算。下面是具体实现方案:
1. 前端传递分辨率给PHP
可以用AJAX异步传递,也可以在页面跳转/加载时用GET参数传递,这里用AJAX做示例:
// 前端JS代码 window.onload = function() { let screenWidth = window.screen.width; let screenHeight = window.screen.height; // 用fetch把数据传给PHP脚本 fetch('your_php_script.php', { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded', }, body: `width=${screenWidth}&height=${screenHeight}` }) .then(response => response.text()) .then(data => { console.log(data); // 接收PHP返回的计算结果 }); };
2. 修改PHP类,接收真实数值
把原来的构造函数改为接收前端传来的宽高数值,而不是JS代码:
class ScreenCalculator { private $width; private $height; // 构造函数接收真实的宽高整数 public function __construct($width, $height) { $this->width = intval($width); $this->height = intval($height); } // 示例计算百分比的方法 public function findPerc($percent) { return $this->width * ($percent / 100); } } // 处理前端传来的POST数据 if ($_SERVER['REQUEST_METHOD'] === 'POST') { $width = $_POST['width'] ?? 0; $height = $_POST['height'] ?? 0; $calculator = new ScreenCalculator($width, $height); echo $calculator->findPerc(50); // 输出宽度的50% }
3. 另一种方案:前端直接计算
如果你的运算逻辑不涉及服务器端数据,完全可以把计算逻辑放到JS里,直接在前端完成,不需要经过PHP:
// 前端直接计算百分比 function findPerc(value, percent) { return value * (percent / 100); } let screenWidth = window.screen.width; console.log(findPerc(screenWidth, 50)); // 直接得到结果
内容的提问来源于stack exchange,提问作者user20171024
相关产品推荐
相关产品推荐

