未在PHP中创建数组

未在PHP中创建数组,php,Php,在远离PHP多年后,我正在重新认识PHP(7.3版),迫不及待地想知道这些问题背后的原因 这是在我为Elementor Pro定制操作编写的代码中发生的。run()函数是类定义的一部分,它扩展了\elementpro\Modules\Forms\Classes\Action\u Base中的抽象方法。我基本上遵循了中的示例代码 $form_fields是一个数组,我可以在调试器中看到它的值(我使用的是PhpStorm)$字段也是一个数组,它有两个值,email和message,在本例中,我也可以

在远离PHP多年后,我正在重新认识PHP(7.3版),迫不及待地想知道这些问题背后的原因

这是在我为Elementor Pro定制操作编写的代码中发生的。run()函数是类定义的一部分,它扩展了\elementpro\Modules\Forms\Classes\Action\u Base中的抽象方法。我基本上遵循了中的示例代码

$form_fields是一个数组,我可以在调试器中看到它的值(我使用的是PhpStorm)$字段也是一个数组,它有两个值,
email
message
,在本例中,我也可以在调试器中看到这两个值

但是$junk是未定义的。在PhpStorm监视面板中引用它会引发“无法计算表达式”错误

$email_索引和$pw_索引也未定义。尽管我可以看到,
email
password
存在于监视面板的$fields中

很明显,我在做一些基本上是错误的事情(我的绝大多数背景都是C语言)。但我不知道那是什么。

PHP7在将源代码转换为操作码时执行静态(SSA)优化
$junk
未在该范围内使用,因此PHP对其进行了优化

在调试xdebug时,这种优化实际上不应该发生(afaik)。但是,如果您使用的是操作码缓存,则可能会使用已经优化的操作码。您应该能够通过禁用它来解决此问题

opcache.enable = 0


有关PHP7中SSA优化的更多信息,请参阅。

我看不出您设置
$junk
的方式有任何错误。这真的是您的代码吗,还是还有其他错误?可能存在可变范围问题。请发布您的
$settings['form_fields']阵列只要
到处打印
,这样您就可以看到哪里出了问题!我将在编辑中显示整个方法$设置['form_fields']相当大,所以除非你能解释为什么需要包含它,否则我宁愿跟进关于它的建议。Thanx,@jasny!这就成功了。为了让其他php新手受益,可以在php.ini文件中设置opcache.enable,您可以在设置->语言与框架->php->单击您定义的CLI解释器右侧的省略号下找到该文件。为了使更改生效,我还必须重新启动Apache web服务器。
opcache.enable = 0