0

我收到了这个 php 通知,我的程序运行良好。这是我的代码:

    $data =  file_get_contents('php://input');
    $P = isset(json_decode($data)->E->EP->P) ? json_decode($data)->E->EP->P : '0';
    for ($i = 1; $i <= $P; $i++) {
        ${idq.$i} = isset(json_decode($data)->E->EP->{idq.$i}) ? json_decode($data)->E->EP->{idq.$i} : '0';
           }
echo ${idq.$i};

我应该修复还是抑制处理错误?

4

2 回答 2

2

假设您希望将变量命名为$idq1,$idq2$idq3

它们目前被视为常量。如果你想在你的变量中使用它们,你需要将你的idq常量用引号引起来:

for ($i = 1; $i <= $P; $i++) {
    ${'idq'.$i} = isset(json_decode($data)->E->EP->{'idq'.$i}) ? json_decode($data)->E->EP->{'idq'.$i} : '0';
}

echo ${'idq'.$i};

但是三元语句使您的代码有点难看(至少在这种情况下)。但是,这看起来更干净,IMO:

$data =  file_get_contents('php://input');

if(isset(json_decode($data)->E->EP->P)) {
    $P = json_decode($data)->E->EP->P;
}
else {
    $P = '0';
}

for ($i = 1; $i <= $P; $i++) {

    if(isset(json_decode($data)->E->EP->{'idq'.$i}) ) {
        ${'idq'.$i} = json_decode($data)->E->EP->{'idq'.$i};
    }
    else {
        ${'idq'.$i} = '0';
    }

}

另外,要回答您的最终问题:

我应该修复还是抑制处理错误?

没有。绝不。您应该始终找到并修复错误,而不是抑制它。

于 2013-09-15T10:40:45.610 回答
1

总是修复你的错误,压制不是解决任何问题的方法,它只是一颗等待着某个时候爆炸的炸弹......

于 2013-09-15T10:40:27.810 回答