You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP中两个变量相加结果恒为0,该如何解决?

解决两个变量相加结果始终为0的问题

嘿,我来帮你搞定这个问题!你的代码里相加结果一直是0,大概率是因为file_get_contents获取到的内容不是有效的数字类型,或者请求直接失败了——PHP在把非数字字符串(比如空内容、HTML错误页、带空格的文本)转换成数值时,会默认得到0,两个0加起来自然还是0。下面是具体的排查和解决步骤:

第一步:先确认获取到的内容到底是什么

先别急着相加,把$s1和$s2的原始内容打印出来,看看是不是你预期的纯数字:

<?php 
$s1 = file_get_contents('https://www.reyfm.de/get/1/s1.php');
$s2 = file_get_contents('https://www.reyfm.de/get/1/s2.php');

// 先输出原始内容,排查问题
header('Content-Type:text/plain');
echo "s1的内容是: '$s1'\n";
echo "s2的内容是: '$s2'\n";

$sum = $s1 + $s2;
echo "相加结果: $sum\n";
?>

如果输出的s1/s2是空字符串、包含换行/空格,或者是类似<html>...</html>的错误页面,那这就是问题根源了。

第二步:安全处理获取到的内容,确保是有效数字

我们可以封装一个小函数,来处理请求失败、内容非数字的情况,保证参与计算的都是有效数值:

<?php 
// 封装安全获取数字的函数
function getValidNumber($url) {
    // 尝试获取远程内容
    $content = file_get_contents($url);
    // 如果请求失败(比如网络问题、URL无效),返回默认值0
    if ($content === false) {
        return 0;
    }
    // 去除内容里的空白字符(空格、换行、制表符都算)
    $cleanContent = trim($content);
    // 验证是否是有效数字,是则转成数值类型,否则返回0
    return is_numeric($cleanContent) ? (float)$cleanContent : 0;
}

// 用安全函数获取数值
$s1 = getValidNumber('https://www.reyfm.de/get/1/s1.php');
$s2 = getValidNumber('https://www.reyfm.de/get/1/s2.php');

// 现在相加就没问题啦
$sum = $s1 + $s2;
header('Content-Type:text/plain');
print($sum);
?>

这个函数帮你处理了三种常见问题:

  • 远程请求失败(比如服务器宕机、网络不通)
  • 获取到的内容带空白字符(比如接口返回数字但多了个换行)
  • 获取到的内容根本不是数字(比如接口返回错误提示)

额外排查:检查PHP的远程访问权限

如果上面的代码还是获取不到内容,可能是你的PHP环境禁用了远程URL访问——看看php.ini里的allow_url_fopen是不是设为Off了。你可以加一段代码检查:

// 先检查allow_url_fopen是否开启
if (!ini_get('allow_url_fopen')) {
    die("错误:PHP的allow_url_fopen未开启,无法远程获取内容");
}

如果确实是这个问题,你需要修改php.ini把allow_url_fopen = On,或者联系你的主机服务商帮忙开启。

内容的提问来源于stack exchange,提问作者Nitro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:43:21