5
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'];

经过一些谷歌搜索后,我看到很多 Isset 被使用。但我很怀疑,在这种情况下如何使用它?它甚至可以解决问题吗?

4

4 回答 4

13

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

$file_ext = isset($path_parts['extension']) ? $path_parts['extension'] : null;
于 2012-09-22T22:56:10.683 回答
4

从 php 7.0 开始,您可以使用 null 合并运算符

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

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

于 2020-06-02T18:08:08.617 回答
1

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

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

if(!empty($path_parts['extension'])) {
  // Extension exists
}
于 2012-09-22T23:00:08.217 回答
0

$f_name没有扩展名,所以$path_parts['extension']没有设置。

pathinfo,看示例 #2

于 2012-09-22T22:56:19.407 回答