※ 引述《you7 (泻老板)》之铭言:
: 我是在网页的第一句就写
: if($_POST['A']== '') $A="哈哈";
: else $A=$_POST['A'];
: 底下才是使用者输入框,一开始会这样写.
: 原本是想说网友点进来是还没有输入东西的,所以判断传值空值,默认一个内容.
: 等到网友进来网页,输入内容,才有真正的传值.
: 以前在appsever的时候这样写没报错 可能是php版本比较旧?还是服务器?(不确定)
: 现在改xampp就会报错....
: Notice: Undefined index: A in C:\xampp\htdocs\..............
: 我应该怎么改正我的写法??
有几个要注意的地方,所以我不用推文了。
第一个若是要说php版本比较旧。
不如说是原本的php.ini的error_reporting的设定比较宽松。
所以可以“忽视”没有给予初始值的变量或是阵列索引。
后来的版本大部份针对这个设定都改成比较严谨的模式。
这也是为什么很多本来用appserv写php的人改用了wamp或是xampp之后。
发现自己写的东西一直出error……
其实error一直都存在,只不过之前无视他罢了。
基本上如果是在实际对外server通常会把display_errors关掉,这种情况去
无视error_reporting就无所谓。
但如果是开发环境下,除了display_errors要打开。
error_reporting一般我自己就只设定E_ALL。也就是有错就要报。
再来你的问题就是$_POST['A']打一开始就不存在了。
直到你送出表单之后才会产生出来。
所以其实你只要一开始判断是不是存在就行了。
不然除了你原文的推文有人提供的方法外,还有一个方法就是…………
if(!isset($_POST['content'])){
$_POST['content'] = '哈哈';
}
$content = $_POST['content'];
ps.不管是做为练习还是正式使用,$a $b这种变量定义名称的方式还是少用。
通常除了做为循环所以会用$i $j之类的,其他的变量或是dictionary索引值
都尽可能给予有意义的名称。
(常看到有人写阵列迭代$k => $v,我自己是一定写$key => $value)