php数组报错Notice: Undefined index解决办法
很多时候使用php数组的时候,定义了数组,引用的时候,并没有定义的索引,会碰到一个注意级别的错误。
例如,
$arr = array("t" => "hello"); print_r($arr); print($arr["t"]); print($arr["a"]);
Array ( [t] => hello ) hello Notice: Undefined index: a in F:\test\index.php on line 5
解决办法是,每次做数组的使用的时候,用isset函数做个判断。
$arr = array("t" => "hello"); print_r($arr); print(isset($arr["t"]) ? $arr["t"] : ""); print(isset($arr["a"]) ? $arr["a"] : "");
Array ( [t] => hello ) hello
这样就解决了,注意级别的错误。
好用的使用数组的方式
为了解决每次使用数组都用isset函数判断,写了个函数。
$arr = array("t" => "hello"); print_r($arr); print(getValue($arr["t"])); print(getValue($arr["a"])); function getValue($str) { return isset($str) ? $str : ""; }
Array ( [t] => hello ) hello Notice: Undefined index: a in F:\test\index.php on line 12
执行的时候还是有问题,分析一下,在getValue函数变量中,数组已经根据索引做了引用,所以也报了错误。最后决定,还是写个类把数组作为成员。
$arr = array("t" => "hello"); print_r($arr); $tarr = new Arr($arr); print($tarr->getValue("t")); print($tarr->getValue("a")); if ($tarr->getValue("t")) { print("success"); } else { print("error"); } if ($tarr->getValue("a")) { print("success"); } else { print("error"); } class Arr { private $arr = array(); public function __construct($arr) { if (is_array($arr)) { $this->arr = $arr; } } public function getValue($key) { return isset($this->arr[$key]) ? $this->arr[$key] : ""; } //一些自己写的操作数组的函数 }
Array ( [t] => hello ) hello success error
问题解决。