PHP:使用三元运算符为其赋值时未定义的变量

时间:2020-12-20 13:04:59

标签: php conditional-operator

我遗漏了一些东西。我确定这是愚蠢的,但我不知道它是什么,抱歉。

我正在使用三元运算符将字符串分配给 $onClick。 紧接着,我尝试访问 $onClick 并收到 Undefined variable: onClick 错误。

我尝试过更简单的版本(布尔值而不是字符串),但它是一样的。我也尝试用相同的结果包装它们。

除了下面的示例 (CakePHP),我还创建了一个在线代码段 here,将 debug() 替换为 var_dump()。注意:要在这个控制台上看到通知你必须fork它,但我向你保证有通知!

注意:尽量提供尽可能多的例子,我可能会有复杂的事情。我有问题的那一行是评论的那一行:<--- this one

代码

$id = 39; // just for this example
$isNew = true; // just for this example

// debug() examples:
debug($isNew); // line 42
debug($isNew ? "sendMeasure('add', null)" : "sendMeasure('edit', {$id})"); //42

// Actual problematic line:
$onCLick = $isNew ? "sendMeasure('add', null)" : "sendMeasure('edit', {$id})"; // <--- this one
debug($onClick); // line 47

// tying a simple bool value (just in case):
$onCLick = $isNew ? true : false;
debug($onClick); // line 51

// I even wrapped them (just in case):
$onCLick = ($isNew ? true : false);
debug($onClick); // line 55

// Expected behavior below:
if ($isNew) {
    $onClick = "sendMeasure('add', null)";
} else {
    $onClick = "sendMeasure('edit', {$id})";
}
debug($onClick); // line 63

输出

debug() output

1 个答案:

答案 0 :(得分:1)

大小写变量的问题。变量定义为 $onCLick 并且您检查为 $onClick

// Actual problematic line:
$onClick = $isNew ? "sendMeasure('add', null)" : "sendMeasure('edit', {$id})"; // <--- this one
debug($onClick); // line 47

// tying a simple bool value (just in case):
$onClick = $isNew ? true : false;
debug($onClick); // line 51

// I even wrapped them (just in case):
$onClick = ($isNew ? true : false);
debug($onClick); // line 55
相关问题