注意:未定义的索引 - 使用isset求解?

时间:2012-09-22 22:53:55

标签: php magento

Notice: Undefined index: extension  in /var/www/.. on line 187

    //185 - $f_name = $this->filename;
    //186 - $path_parts = pathinfo($f_name);
    //187 - $file_ext = $path_parts['extension'];

经过一些googleing,我看到很多Isset被使用了。但在这种情况下,我对如何使用它有疑问?它甚至会解决问题吗?

4 个答案:

答案 0 :(得分:8)

是的,在这种情况下您可以使用isset。在尝试访问密钥之前,首先检查密钥是否已设置。如果需要,我会使用三元运算符设置默认值。

$file_ext = isset($path_parts['extension']) ? $path_parts['extension'] : null;

答案 1 :(得分:2)

自php 7.0起,您可以使用null合并运算符

$file_ext = $path_parts['extension'] ?? null;

https://www.php.net/manual/en/migration70.new-features.php

答案 2 :(得分:0)

$f_name没有扩展程序,因此未设置$path_parts['extension']

pathinfo,看看示例#2

答案 3 :(得分:0)

如果路径有扩展名, pathinfo将只返回“扩展名”索引,否则不会返回此索引。

应使用简单检查来确定路径是否具有索引,例如:

if(!empty($path_parts['extension'])) {
  // Extension exists
}