Php 为什么$some_数组[';一个未定义的键';]会在Mac上抛出一个错误,而不是Wamp?

Php 为什么$some_数组[';一个未定义的键';]会在Mac上抛出一个错误,而不是Wamp?,php,windows,macos,wamp,Php,Windows,Macos,Wamp,由于某些原因,我的Mac电脑显示错误消息“Undefined index:a Undefined key”,而在使用WAMP的Windows上,它会优雅地忽略该异常 用法示例: if ($some_array['an-undefined-key']) { // ... } 是否有改变这种行为的PHP配置 我意识到我可以做到以下几点,但如果可能的话,我宁愿使用上述技术: if (isset($some_array['an-undefined-key']) && $some

由于某些原因,我的Mac电脑显示错误消息“Undefined index:a Undefined key”,而在使用WAMP的Windows上,它会优雅地忽略该异常

用法示例:

if ($some_array['an-undefined-key']) {
    // ...
}
是否有改变这种行为的PHP配置

我意识到我可以做到以下几点,但如果可能的话,我宁愿使用上述技术:

if (isset($some_array['an-undefined-key']) && $some_array['an-undefined-key']) {
    // ...
}

是的,您需要调整
error\u reporting
display\u errors
设置,这两种设置听起来好像在您的两个不同环境中有所不同

这里是链接


使用已安装的repo的Mac上的PHP与WAMP服务器之间的区别在于PHP.ini,请尝试编辑脚本并在顶部附加以下行:

 ini_set('display_errors', '1');
 error_reporting(E_ALL);

这应该在您的脚本上。如果这不是问题,那么请回复,我将相应地进行更改。

您不应该在脚本中添加不必要的行,因为在上线时您必须更改它们

编辑php.ini(使用wampmanager菜单,以便获得正确的文件)

查找这些参数并更改为这些值

error_reporting = E_ALL
这个会在网页上显示错误

display_errors = On
error_log = "c:/wamp/logs/php_error.log"
这将使错误记录到错误日志指定的文件中,即使它们没有显示在屏幕上

log_errors = On
WAMP配置了XDEBUG,因此您现在应该可以在网页中看到橙色的大错误 检查php.ini文件底部的这一行。系统上的版本号可能不同

; XDEBUG Extension
zend_extension = "c:/wamp/bin/php/php5.X.Y/zend_ext/php_xdebug-2.2.0-5.3-vc9.dll"

如果(!empty($some_array['an-undefined-key']){}请看@fredrik,这似乎确实有效。在过去,我遇到了
empty
的一些问题,这就是为什么我不倾向于使用它,尽管我不记得这些问题是什么:我尝试在两种环境中都这样做,但在这两种情况下都没有任何区别。一个很大的区别是Wamp运行的是更高版本的PHP。但在网上搜索时,我找不到任何这样的变化。
; XDEBUG Extension
zend_extension = "c:/wamp/bin/php/php5.X.Y/zend_ext/php_xdebug-2.2.0-5.3-vc9.dll"