<BODY>
<form method=post action="index.php">
name: <input type="text" name="name">
age: <input type="text" name="age">
<INPUT TYPE="submit">
</form>
<?PHP 
session_start();
$users = array();
class User {
private $name;
private $age;
/**
 * @return the $name
 */
public function getName() {
return $this->name;
}

/**
 * @return the $age
 */
public function getAge() {
return $this->age;
}

/**
 * @param $name the $name to set
 */
public function setName($name) {
$this->name = $name;
}

/**
 * @param $age the $age to set
 */
public function setAge($age) {
$this->age = $age;
}

}



if (!$_POST==null) {
$user = new User();
$user->setName($_POST["name"]);
    $user->setAge($_POST["age"]);
}


if(!isset($_SESSION["users"])){
$_SESSION["users"]=$users; }else{
$users = $_SESSION["users"];

$users[]=$user;
print_r($users);
$_SESSION["users"]=$users; }

if (count($users)>0) {
for ($i = 0; $i < count($users); $i++) {
if (is_object($users[$i])){
echo "my name is ".$users[$i]->getName().",I am ".$users[$i]->getAge()." years old.<br>";
}

};
}
?>
 </BODY>
编写如上代码,实现简单的输入输出,为什么每执行一次,在users数组中都会有3个null值,就是0,1,2,的值是null,3的值才是user,之后是4,5,6的值是null,7的值是user?debug了一下,发现是php代码会循环3次debug才结束?这是为什么?

解决方案 »

  1.   

    又试了一下,Firefox下是有问题的,IE下没有问题。Firefox输出Array ( [0] => [1] => [2] => User Object ( [name:User:private] => DE [age:User:private] => 34 ) ) IE下输出Array ( [0] => User Object ( [name:User:private] => DE [age:User:private] => 34 ) ) 
    以前只知道不同浏览器对CSS的支持不同,怎么运行代码也不同啊。
      

  2.   

    昨天还是3个null,今天就变2个了
      

  3.   

    你每次刷新页面的时候如果session有值都会执行 $users[]=$user;而你刷新页面但不是post的时候user是null
      

  4.   

    在Firefox上每刷新一次添加3个null值
      

  5.   

     session_start();之前我记得不可以有输出吧
      

  6.   

    额。。没正常,,,IE下是正常的,Firefox还是会添加好几个null值。。session_start()确实要在<html>之前。。
      

  7.   

    有没其他人有过这样的问题啊?是Firefox的问题么
      

  8.   

    每刷新一次,在users数组里添加3个元素。