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

PHP: Undefined variable when assigning value to it with a ternary operator

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

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

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

除了下面的示例 (CakePHP) 之外,我创建了一个在线代码段 heredebug() 替换为 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

输出:

关于大写和小写变量的问题。定义为 $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