我正在尝试使用一点PHP,并且我正在尝试理解为什么我会在以下情况下遇到undefined index
错误:
class foo {
public static some_dict;
public function fillSomeDict() {
self::some_dict = array(1=>"foo",2=>"baz",4=>"cous");
}
public function dump() {
$err = error_get_last();
$type = $err["type"];
echo self::some_dict[$type];
}
public function setup() {
register_shutdown_function(array($this, "dump"));
}
}
$x = new foo();
$x->fillSomeDict();
我的问题是,我总是在这一行some_dict[$type]
上收到'未定义的索引'错误。我已经尝试通过父调用(例如这里)在__construct上填充数组,但它仍然无效...
问题: 如何在PHP中正确引用此数组的元素?我该如何正确设置?
谢谢!
答案 0 :(得分:1)
在作为数组访问它之前,你应该检查$ err是否是一个数组。
并检查你是否在self :: $ some_dict中有一个元素,索引为$ err ['type'](我在'echo'中这样做)
public function dump() {
$err = error_get_last();
if(!is_array($err)) {
echo 'No errors!';
return;
}
echo isset(self::$some_dict[$err["type"]]) ? self::$some_dict[$err["type"]] : 'No error with index "'.$err["type"].'"';
}
答案 1 :(得分:1)
初始化变量时需要定义数组。
所以改变
public static $some_dict;
到
public static $some_dict = array(1=>"foo",2=>"baz",4=>"cous");
当您致电时,您需要使用$
并使用isset
if(isset(self::$some_dict[$err["type"]])){ echo self::$some_dict[$err["type"]]; }