<h1><?php echo $GLOBALS['translate']['About'] ?></h1>
Notice: Undefined index: About in page.html on line 19
是否可以“捕获”未定义的索引,以便我可以创建它(数据库查找)&amp;从我的函数返回它,然后执行echo?
答案 0 :(得分:7)
检查是否已分配值的最简单方法是使用isset方法:
if(!isset($GLOBALS['translate']['About'])) {
$GLOBALS['translate']['About'] = "Assigned";
}
echo $GLOBALS['translate']['About'];
答案 1 :(得分:2)
您可以在访问之前检查此特定索引是否存在。请参阅isset()
上的手册。这有点笨拙,因为你必须两次写变量名。
if( isset($GLOBALS['translate']['About']) )
echo $GLOBALS['translate']['About'];
您可能还会考虑更改生产环境的error_reporting
值。
答案 2 :(得分:1)
这不是正确的做法。我会努力正确地构建阵列。否则,每页最终会有1000个db请求。
另外,你应该在输出之前检查数组,并在那里放一个默认值:
<h1><?php echo isset($GLOBALS['translate']['About'])?$GLOBALS['translate']['About']:'default'; ?></h1>
答案 3 :(得分:0)
是。使用isset确定是否定义了索引,如果不定义,则可以为其分配值。
if(!isset($GLOBALS['translate']['About'])) {
$GLOBALS['translate']['About'] = 'foo';
}
echo "<h1>" . $GLOBALS['translate']['About'] . "</h1>";
答案 4 :(得分:0)
尝试类似:
if ( !isset($GLOBALS['translate']['About']) )
{
$GLOBALS['translate']['About'] = get_the_data('About');
}
echo $GLOBALS['translate']['About'];
答案 5 :(得分:0)
如果要捕获未定义索引
,则需要定义自定义错误处理程序set_error_handler('exceptions_error_handler');
function exceptions_error_handler($severity, $message, $filename, $lineno) {
if (error_reporting() == 0) {
return;
}
if (error_reporting() & $severity) {
throw new ErrorException($message, 0, $severity, $filename, $lineno);
}
}
try{
}catch(Exception $e){
echo "message error";
}