php数组的值转换类型后有问题

请帮看下代码

$Dss=array(0,0,0,0,0,0,0,0,0,0);
for ($i=1;$i<=12;$i++){ //这个循环是为了取指定的12条数据
    //$sql="从数据库取值";
    $row['DSS'] = '1,2,3,4,5,6,7,8,9,10|11,12,13,14,15,16,17,18,19,20'; //取到的值(只有两条数据有值)
    $Dsx=explode("|",$row['DSS']); //以|分割为数组
    foreach ($Dsx as $Ds=>$v){ //遍历
        if (strpos($v,",")){ //取到值才进行操作
            $ns=array_pad(explode(",",$v),15,0); //预防值不够15位
            for($c=0;$c<15;$c++){
                //$Dss[$c]=floatval($Dss[$c]); //不转换为原值,一转换就为0 ???
                //$ns[$c]=floatval($ns[$c]); //不转换为原值,一转换就为0 ???
                $Dss[$c].=$ns[$c]; //拼接正常,不能用+= 否则为0 ???
            }
        }
    }
}
var_dump($Dss[0]);

如果照上面的代码运行下来是 string(9) "0111" 值都是正常的。但不能进行类型转换,一转换就为0,而我想要的结果是12.求解

阅读 1.9k
3 个回答
✓ 已被采纳新手上路,请多包涵

终于找到原因了,从数据库取出来的值含有控制字符,在处理前进行替换
$row['DSS']=preg_replace( '/[\x00-\x1F]/','',$row['DSS']);

现在结果完成正确了

先赋值再转换

运行正常的结果不是0111111111111111111111111111111111111吗?+=的结果是144啊,看不懂你想说啥

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题