PHP注意:使用未定义的常量idq - 假设'idq'

时间:2013-09-15 10:37:23

标签: php

我得到这个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};

我应该通过处理修复或抑制错误吗?

2 个答案:

答案 0 :(得分: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';
    }

}

另外,回答你的最后一个问题:

  

我应该通过处理修复或抑制错误吗?

不。决不。您应该始终找到并修复错误而不是抑制错误。

答案 1 :(得分:1)

始终修复你的错误,抑制不是任何事情的解决方案,它只是一个等待某个时间关闭的炸弹......