虽然我使用 isset,但我收到一个未定义的索引错误

Although I use isset, I get an undefined index error

提问人:Paul Green 提问时间:2/28/2019 最后编辑:Habip OğuzPaul Green 更新时间:2/28/2019 访问量:183

问:

我知道这需要太多时间。但是该功能并不能解决我的问题。isset

$get = (isset($this->settings[$set['id']])) ? $this->settings[$set['id']] : '';

注意:未定义的索引:第 419 行 \public_html\settings 中的 id.php

php isset 未定义索引

评论

0赞 Vidal 2/28/2019
您遇到的具体错误是什么?
1赞 AbraCadaver 2/28/2019
可能是未定义的索引 ID ;-)
0赞 Vidal 2/28/2019
是的,我也在想同样的想法,这就是我在回答中建议的。

答:

2赞 Vidal 2/28/2019 #1

在将变量用作参数之前,请尝试检查变量是否已设置。

$get = isset( $set['id']) ? $this->settings[$set['id']] : '';

评论

3赞 AbraCadaver 2/28/2019
可能需要两项检查。isset
1赞 Habip Oğuz 2/28/2019 #2

也许,必须检查,像这样:$set['id']

$set_ = isset($set['id']) ? $set['id'] : '';
$value = isset($this->settings[$set_]) ? $this->settings[$set['id']] : '';
1赞 ArtisticPhoenix 2/28/2019 #3

我只需将其添加到isset调用中即可

$get = isset( $set['id'],$this->settings[$set['id']]) ? $this->settings[$set['id']] : '';

您可以在 isset 中使用多个参数。这大致等同于这样做:

$get = isset($set['id']) && isset($this->settings[$set['id']]) ? $this->settings[$set['id']] : '';

这可以很容易地用下面的代码来测试:

$array = ['foo' => 'bar'];
$set = []; //not set
#$set = ['id' => 'foo']; //uncomment to test if set


#using [] to add an element to a string not an array
$get = isset($set['id'],$array[$set['id']]) ? $array[$set['id']] : '';

echo $get;

如果输出是 如果您将其保留注释,则输出为空字符串。$set = ['id' => 'foo']bar

沙盒