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

PHP eval计算快门速度报错,需导出MySQL数据至JSON供ExifTool使用

问题解决:快门速度转换的PHP语法错误及优化方案

错误原因分析

你的代码逻辑完全搞反,且使用eval既不安全又极易引发语法错误:

  • 原代码中,遇到分数格式的快门速度(如1/125)时直接赋值,反而对非分数值执行eval,这和注释里“把1/125转为0.008”的需求完全相悖
  • eval执行时,若$myvalue包含不符合PHP语法的内容(比如数据库里存在格式异常的值),就会触发你遇到的“意外分号”这类语法错误

修复后的代码

直接通过字符串分割计算分数值,彻底抛弃不安全的eval:

while($row = mysqli_fetch_array($result_images)){    
    // 将1/125转换为0.008格式(若需逗号分隔可替换小数点)
    $myvalue = $row[1];
    if (strpos($myvalue, '/') !== false)  {
        // 拆分分数的分子与分母
        list($numerator, $denominator) = explode('/', $myvalue);
        // 计算小数并保留3位精度,匹配ExifTool需求
        $exposure = number_format((int)$numerator / (int)$denominator, 3);
        // 若ExifTool要求用逗号作为小数分隔符,替换小数点
        $exposure = str_replace('.', ',', $exposure);
    } else {
        // 非分数格式直接使用原值
        $exposure = $myvalue;
    }
    
    // 后续将$exposure加入JSON数据数组
}

批量处理优化建议

  • 处理50000条记录时,建议用mysqli_fetch_all一次性获取所有数据再循环处理,比逐行读取数据库更高效
  • 导出JSON时,用json_encode批量转换数组,避免手动拼接JSON字符串导致格式错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 02:52:10