我的PHP版本是5.3.5。
代码:
$num = $_REQUEST['num'] ?: 7;
错误:
Notice: Undefined index: num in C:\path\to\file.php on line 34
有什么建议吗?
答案 0 :(得分:8)
$num = isset($_REQUEST['num']) ? $_REQUEST['num'] : 7;
我假设您需要$_REQUEST['num']
,否则设置为7。
答案 1 :(得分:5)
这是预期的行为;根据{{3}},?:
快捷方式就是:快捷方式。
换句话说:
$num = $_REQUEST['num'] ?: 7;
的评估方式与:
相同$num = $_REQUEST['num'] ? $_REQUEST['num'] : 7;
以及所暗示的一切(并且通过线程中的其他答案得到充分解决)。
答案 2 :(得分:5)
短分配代码没有使用错误抑制吗?
我们可以写$ price = @ $ rec ['Product'] ['new']?:$ rec ['Product'] ['old'];
使用@保存我重复相同的变量,并允许我使用捷径三元运算符而不产生通知。
我知道使用@被认为不好,但对于这个特殊情况,我不认为任何事情都可能出错。
感谢。
答案 3 :(得分:2)
如果请求中没有,您可能会收到警告。
你最好这样做:
$num = (array_key_exists('num', $_REQUEST)) ? intval($_REQUEST['num']) : 7;
答案 4 :(得分:2)
我使用@ error suppress的第二个dhaval解决方案,更具可读性:
$ num = @ $ _ REQUEST ['num']?:7;
.. ..或
$ num =(array_key_exists('num',$ _REQUEST))? $ _REQUEST ['num']:7;
如果我试图了解其他人的代码,我知道我更愿意阅读。我认为它提供了将error_reporting设置为E_ALL&之间的愉快介质。 ~E_NOTICE(非常糟糕)和上面的样板代码。
答案 5 :(得分:1)
$num = (isset($_REQUEST['num'])) ? $_REQUEST['num'] : 7;
答案 6 :(得分:1)
访问具有不存在的索引的数组总是会引发注意。你需要忽略通知,因为它确实返回null,或者技术上你应该使用array_key_exists
。