Home  >  Article  >  Backend Development  >  三目运算符 notice 提示

三目运算符 notice 提示

WBOY
WBOYOriginal
2016-06-20 12:52:391397browse

$act = isset($_POST['act']) ? $_POST['act']:(isset($_GET['act']) ? $_GET['act']:'login');


上面代码 最后一个三目运算符 为什么一定加小括号括起来,如果不括起来 就会出现notice错误


回复讨论(解决方案)

不存在你说的现象

Notice: Undefined index: act in C:\Users\John\Desktop\shop\admin\privilege.php on line 3 


至少是你没有反映这是情况

这个怎么个回事?怎么会报一个notice呢?

你是说我 #3 的截图?
第二行 $act 未赋值就直接使用(echo $act;),那自然是要报 notice 的
但第三行并没有你要添加的括号,却也没有报 notice

我这样做是为了证明:我并没有屏蔽掉 notice 级别错误

我也没有用@屏蔽错误呢 怎么加了括号就没有naotice错误 没加括号就有。

没有问题。
估计你提供的代码不完整,那个notice是其他地方的。

<?phpini_set('display_errors','on');error_reporting(E_ALL);$act = isset($_POST['act']) ? $_POST['act']:(isset($_GET['act']) ? $_GET['act']:'login');$act = isset($_POST['act']) ? $_POST['act']:isset($_GET['act']) ? $_GET['act']:'login';?>

还是不知道原因, 没加括号就notice  说这个变量 没定义,我又var_dump 了下 这个act也有数据呢:
array(4) { ["act"]=> string(6) "signin" ["username"]=> string(0) "" ["password"]=> string(0) "" ["captcha"]=> string(0) "" 

我换成这样就没事了 

$act = isset($_REQUEST['act']) ? $_REQUEST['act']:isset($_REQUEST['act']) ? $_REQUEST['act']:'login';


都统一 $_REQUEST

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn