用php5.2写的程序在切换到5.3之后出现notice错误???

以前一直用的是php5.2,但是最近发现版本略低,就切换成了php5.3(我用的是phpstudy组合包),但是在切换后,以前用php5.2写的程序就会出现notice提示,虽然不影响运行出正确结果。
图片描述

图片描述

我以后应该用那种版本的php??我还是喜欢用组合包之类的

这是报错页面的代码:

<?php
if(!empty($_POST)){
    $tt= $_POST['tt'];
    $id= $_POST['id'];
    $pwd= $_POST['pwd'];
    $wb= $_POST['wb'];
    $car= $_POST['car'];
    $yx= $_POST['yx'];
}
    echo "<br/>";
    // echo "<br/>编程语言:$t33";    
    // print_r($t);
    echo "编程语言:";
    // 方法1:遍历数组,到那时最后的逗号无法避免
    // foreach ($t as $key => $value) {
    //     echo $value . ",";
    // }
    // 方法2:使用for循环
    $len=count($tt);//获得数组的长度
    $str="";
    for ($i=0; $i<$len ; $i++) { 
        if ($i==$len-1) {
             // $str.=$tt[$i] . "。";
             $str=$str . $tt[$i] ."。。";
        }
        else{
     $str.=$tt[$i] .",";
        }
    }
    echo $str;
    echo "<br/>账号:$id";
    echo "<br/>密码:$pwd";
    echo "<br/>介绍:$wb";
    echo "<br/>汽车:$car";
    echo "<br/>院系:$yx";


?>
<form action=""  method="POST" name="bb">
<table border='1'>
<h2 align="center" class="bd">form表单练习</h2>
<p id="lan">你喜欢那种<font>语言</font>?</p>
<input type="checkbox" name="tt[]" value="python" /> python
<input type="checkbox" name="tt[]" value="javascript" /> javascript
<input type="checkbox" name="tt[]" value="php"  checked="checked" />php
<input type="checkbox" name="tt[]" value="swift"/> swift
<hr/>
<p>login in</p>
Account:<input type="text" name="id" value=""  />
Password:<input type="password" name="pwd" value="" /><br/>
<input type="submit" name="sub" value="login" />
<input type="reset"  name="re"  value="cancel" />
</table>
</form>

![图片描述][1]
我感觉不是代码的问题,还是因为php版本切换导致的,你说呢???
阅读 3.8k
4 个回答

这跟php版本没太大关系,而是你应该养成一个良好的编程习惯,不确定是否有值时要判断有才输出.

否则未关闭错误提示直接路径全部爆出来了

你应该改成:

if(isset($user['yx'])){
    echo $user['yx'];
}

//或者

if(!empty($user['yx'])){
    echo $user['yx'];
}

另外建议直接使用最新的稳定版本,截止到[2016/04/30]的LTS版本:5.6.21

跟版本没关系,变量没定义就使用,当然要报错!请一定注意,在使用非预定义变量的时候一定要先定义才能使用!

另外关于版本问题,根据市场份额和具体项目决定
目前建议在生产环境使用5.6
当然5.3用的最多 5.4其次
7速度最快

$tt没定义就用。而且这种没定义和版本无关,本来就会报错,只是php.ini的错误设置级别不同造成你以为5.2的就不报错

用isset先判断

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题