使用 isset 定义索引不起作用
Using isset to define an index not working
这对我来说是新事物,我已经阅读并阅读了有关如何解决此问题的信息。从那以后,我的代码已经取得了长足的进步。
当我开始这篇文章时,我打算像这样定义每个请求:
if ($_REQUEST['do'] == 'remove') {
$theme = 'default theme applied';
setcookie("drcstyleaccent", "", time() - 3600, '/');
}
if ($_GET['accent'] == 'light') {
$theme = 'light';
setcookie('drcstyleaccent', 'light', time()+60*60*24*365, '/');
}
echo $theme . 'theme applied';
每个主题都将在单独的获取请求中定义,每个请求中都有一个新的 cookie/变量。
自从开始我的未定义索引搜索以来,我已将我的脚本升级到:
$accent = isset($_GET['accent']) ? $_GET['accent'] : '';
if ($_REQUEST['do'] == 'remove') {
setcookie("drcstyleaccent", "", time() - 3600, '/');
} else {
setcookie('drcstyleaccent', $accent, time()+60*60*24*365, '/');
}
echo $accent . ' theme applied';
从我读过的所有内容来看,这对我来说是正确的,但我不断收到未定义索引错误。根据我的阅读,$accent = isset($_GET['accent']) ? $_GET['accent'] : '';
正在定义索引...
我也试过用 isset
包装 do
请求,但这应该不是必需的,因为 else 对吗?
我知道我可以用 error_reporting(E_ALL & ~E_NOTICE);
禁用错误,但我确实想要一个“作弊”。
我已准备好接受反对票,我知道这里已经涵盖了这一点。关于这方面的主题太多,无法一一筛选,我所发现的一切都帮助我到达了现在的位置,但现在我被困住了。
我设置索引哪里出错了?
您将需要 if 中的 isset。不管别的。您使用的数组项可能存在也可能不存在。
if (isset($_REQUEST['do']) and $_REQUEST['do'] == 'remove') {
I have tried also wrapping the do request with an isset but this should not be necessary because of the else right?
没有。通过 运行 $_REQUEST['do'] == 'remove'
,您正在访问索引 'do'
处的 $_REQUEST
。如果未定义此索引,则会产生 Undefined index 错误。为了解决这个问题,在相等性测试前加上 isset()
:
if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'remove') {
// ...
}
这对我来说是新事物,我已经阅读并阅读了有关如何解决此问题的信息。从那以后,我的代码已经取得了长足的进步。
当我开始这篇文章时,我打算像这样定义每个请求:
if ($_REQUEST['do'] == 'remove') {
$theme = 'default theme applied';
setcookie("drcstyleaccent", "", time() - 3600, '/');
}
if ($_GET['accent'] == 'light') {
$theme = 'light';
setcookie('drcstyleaccent', 'light', time()+60*60*24*365, '/');
}
echo $theme . 'theme applied';
每个主题都将在单独的获取请求中定义,每个请求中都有一个新的 cookie/变量。
自从开始我的未定义索引搜索以来,我已将我的脚本升级到:
$accent = isset($_GET['accent']) ? $_GET['accent'] : '';
if ($_REQUEST['do'] == 'remove') {
setcookie("drcstyleaccent", "", time() - 3600, '/');
} else {
setcookie('drcstyleaccent', $accent, time()+60*60*24*365, '/');
}
echo $accent . ' theme applied';
从我读过的所有内容来看,这对我来说是正确的,但我不断收到未定义索引错误。根据我的阅读,$accent = isset($_GET['accent']) ? $_GET['accent'] : '';
正在定义索引...
我也试过用 isset
包装 do
请求,但这应该不是必需的,因为 else 对吗?
我知道我可以用 error_reporting(E_ALL & ~E_NOTICE);
禁用错误,但我确实想要一个“作弊”。
我已准备好接受反对票,我知道这里已经涵盖了这一点。关于这方面的主题太多,无法一一筛选,我所发现的一切都帮助我到达了现在的位置,但现在我被困住了。
我设置索引哪里出错了?
您将需要 if 中的 isset。不管别的。您使用的数组项可能存在也可能不存在。
if (isset($_REQUEST['do']) and $_REQUEST['do'] == 'remove') {
I have tried also wrapping the do request with an isset but this should not be necessary because of the else right?
没有。通过 运行 $_REQUEST['do'] == 'remove'
,您正在访问索引 'do'
处的 $_REQUEST
。如果未定义此索引,则会产生 Undefined index 错误。为了解决这个问题,在相等性测试前加上 isset()
:
if (isset($_REQUEST['do']) && $_REQUEST['do'] == 'remove') {
// ...
}