练习一个简单的程序,本来应该能正常输出
Array ( [PHP] => 2 ) Array ( [PHP] => 2 [SQL] => 1 ) Array ( [PHP] => 2 [SQL] => 0 )
但是却输出:
Array ( [PHP] => 2 )
( ! ) Notice: Undefined index: SQL in D:\Program Files\VertrigoServ\www\qx.php on line 12
Call Stack
# Time Memory Function Location
1 0.0012 339480 {main}( ) ..\qx.php:0
2 0.0013 340288 Cart->add_item( ) ..\qx.php:37
Array ( [PHP] => 2 [SQL] => 1 ) Array ( [PHP] => 2 [SQL] => 1 )
为什么呀???不让加入第二个元素SQL???如果都用的是PHP,就没有问题代码如下:
<html>
<head>
<title>PHP 测试</title>
</head>
<body>
<?php
class Cart
{
var $items;
function add_item($name,$num)
{
if($this->items[$name] == NULL)
$this->items[$name] = $num;
else
$this->items[$name] += $num;
}
function remove_item($name,$num)
{
if($this->items[$name] > $num)
{
$this->items[$name] -= $num;
return true;
}
else
{
return false;
}
}
}
$mycart = new Cart();
$item0_name = "PHP";
$item0_num = 2;
$mycart->add_item($item0_name,$item0_num);
print_r($mycart->items);
$item1_name = "SQL";
$item1_num = 1;
$mycart->add_item($item1_name,$item1_num);
print_r($mycart->items);
$mycart->remove_item($item1_name,$item1_num);
print_r($mycart->items);
?>
</body>
</html>
Array ( [PHP] => 2 ) Array ( [PHP] => 2 [SQL] => 1 ) Array ( [PHP] => 2 [SQL] => 0 )
但是却输出:
Array ( [PHP] => 2 )
( ! ) Notice: Undefined index: SQL in D:\Program Files\VertrigoServ\www\qx.php on line 12
Call Stack
# Time Memory Function Location
1 0.0012 339480 {main}( ) ..\qx.php:0
2 0.0013 340288 Cart->add_item( ) ..\qx.php:37
Array ( [PHP] => 2 [SQL] => 1 ) Array ( [PHP] => 2 [SQL] => 1 )
为什么呀???不让加入第二个元素SQL???如果都用的是PHP,就没有问题代码如下:
<html>
<head>
<title>PHP 测试</title>
</head>
<body>
<?php
class Cart
{
var $items;
function add_item($name,$num)
{
if($this->items[$name] == NULL)
$this->items[$name] = $num;
else
$this->items[$name] += $num;
}
function remove_item($name,$num)
{
if($this->items[$name] > $num)
{
$this->items[$name] -= $num;
return true;
}
else
{
return false;
}
}
}
$mycart = new Cart();
$item0_name = "PHP";
$item0_num = 2;
$mycart->add_item($item0_name,$item0_num);
print_r($mycart->items);
$item1_name = "SQL";
$item1_num = 1;
$mycart->add_item($item1_name,$item1_num);
print_r($mycart->items);
$mycart->remove_item($item1_name,$item1_num);
print_r($mycart->items);
?>
</body>
</html>
{
var $items;
function add_item($name,$num)
{
if($this->items["{$name}"] == NULL)
$this->items["{$name}"] = $num;
else
$this->items["{$name}"] += $num;
}
function remove_item($name,$num)
{
if($this->items["{$name}"] > $num)
{
$this->items["{$name}"] -= $num;
return true;
}
else
{
return false;
}
}
}
$mycart = new Cart();
$item0_name = "PHP";
$item0_num = 2;
$mycart->add_item($item0_name,$item0_num);
print_r($mycart->items);
$item1_name = "SQL";
$item1_num = 1;
$mycart->add_item($item1_name,$item1_num);
print_r($mycart->items);
$mycart->remove_item($item1_name,$item1_num);
print_r($mycart->items);
<head>
<title>PHP 测试</title>
</head>
<body>
<?php
class Cart
{
var $items;
function add_item($name,$num)
{
if($this->items["{$name}"] == NULL)
$this->items["{$name}"] = $num;
else
$this->items["{$name}"] += $num;
}
function remove_item($name,$num)
{
if($this->items["{$name}"] > $num)
{
$this->items["{$name}"] -= $num;
return true;
}
else
{
return false;
}
}
}
$mycart = new Cart();
$item0_name = "PHP";
$item0_num = 2;
$mycart->add_item($item0_name,$item0_num);
print_r($mycart->items);
$item1_name = "SQL";
$item1_num = 1;
$mycart->add_item($item1_name,$item1_num);
print_r($mycart->items);
$mycart->remove_item($item1_name,$item1_num);
print_r($mycart->items);
?>
</body>
</html>
<head>
<title>PHP 测试</title>
</head>
<body>
<?php
class Cart
{
var $items;
function add_item($name,$num)
{
if($this->items["{$name}"] == NULL)
$this->items["{$name}"] = $num;
else
$this->items["{$name}"] += $num;
}
function remove_item($name,$num)
{
if($this->items["{$name}"] > $num)
{
$this->items["{$name}"] -= $num;
return true;
}
else
{
return false;
}
}
}
$mycart = new Cart();
$item0_name = "PHP";
$item0_num = 2;
$mycart->add_item($item0_name,$item0_num);
print_r($mycart->items);
$item1_name = "SQL";
$item1_num = 1;
$mycart->add_item($item1_name,$item1_num);
print_r($mycart->items);
$mycart->remove_item($item1_name,$item1_num);
print_r($mycart->items);
?>
</body>
</html>
if($this->items[$name] == NULL)$this->items[$name] 第一次不存在自动创建了
$this->items[$name] $name = "SQL" 时 $this->items 数组是存在的,但$this->items['SQL'] 在执行的时候是不存在用!isset($this->items[$name]) 把它替换掉
<head>
<title>PHP 测试</title>
</head>
<body>
<?php
class Cart
{
var $items;
function add_item($name,$num)
{
if(!isset($this->items[$name]))
$this->items[$name] = $num;
else
$this->items[$name] += $num;
}
function remove_item($name,$num)
{
if($this->items[$name] >= $num)
{
$this->items[$name] -= $num;
return true;
}
else
{
return false;
}
}
}
$mycart = new Cart();
$item0_name = "PHP";
$item0_num = 2;
$mycart->add_item($item0_name,$item0_num);
print_r($mycart->items);
$item1_name = "SQL";
$item1_num = 1;
$mycart->add_item($item1_name,$item1_num);
print_r($mycart->items);
$mycart->remove_item($item1_name,$item1_num);
print_r($mycart->items);
?>
</body>
</html>
error_reporting = E_ALL & ~E_NOTICE