$options = array('health', 'strength', 'agility', 'stamina', 'defence');
$total = array();
foreach ($options as $value)
{
foreach ($objects as $object)
{
$total[$value] += $object->$value;
}
}
var_dump($total);
我在名为$objects
的数组中有一些对象。它正在向$total
提供数据。
但由于某种原因,它正在抱怨一些未定义的偏移。
Notice: Undefined index: health in C:\wamp\www\objbattle\index.php on line 32
第32行是:$total[$value] += $object->$value;
为什么!?我该如何摆脱它?
答案 0 :(得分:2)
因为第一次迭代中不存在$total['health']
。
答案 1 :(得分:2)
这是因为您尝试增加未初始化的值。首先尝试将它们初始化。
$total = array('health' => 0, 'strength' => 0, 'agility' => 0, 'stamina' => 0, 'defence' => 0);
答案 2 :(得分:0)
我希望因为你试图增加一个未初始化的值......
尝试在第一轮进行分配,如下所示:
$total[$value] = $object->$value;
或更简单地说,初始化数组值...
$total = array();
$total['health'] = 0;
etc...
或者像@josmith在他的回答中建议的那样做
答案 3 :(得分:0)
每个第一个循环都不存在关键'健康'。因此,您将收到通知。
你可以这样做:
$total[$value] = 0;
在第二个foreach之上。
或者,你可以以懒惰的方式做到并抑制注意:
error_reporting(E_ALL ^ ~E_NOTICE);
答案 4 :(得分:0)
为什么!? 我认为因为设置报告了哪些PHP错误。