2015-11-19 54 views
0

任何人都可以告诉我,如果在下面的代码中有错误,请吗?PHP Array - 缺少输入

eval ("\$typeselectbit = \"".$cmstpl->get("admin_selectbitdefault")."\";"); 
$result = $cmsdb->query("SELECT * FROM cms".$n."_type WHERE deleted = '0' ORDER BY typename ASC"); 
while ($type = $cmsdb->fetch_array($result)) 
{ 
    $typeid = $type['typeid']; 
    $typename = $type['typename']; 

    eval("\$typeselectbit .= \"".$cmstpl->get(ifelse($GPC['typeid'] == $typeid, "typeselectbit2", "typeselectbit"))."\";"); 
} 

它不输出数组中的第一个条目。但也许错误是在别的地方。

目前,我不确定,这个问题来自哪里。

您认为如何?它看起来对你正确吗?

如果不是,我需要解决什么问题以及它应该是什么样子?

还是我必须在脚本的其他地方看看?

任何特定的提示,这可能有助于找到原因?

谢谢你的帮助! :)

+2

为什么使用eval? – Kenney

+0

@Jenson但对于什么是'eval'? O_O – user2655603

回答

0

代码eval("\$typeselectbit .= \"".$cmstpl->get(ifelse($GPC['typeid'] == $typeid, "typeselectbit2", "typeselectbit"))."\";");中的最后一行有一个分析错误。 ifelse是无效的PHP语法(,除非这是您之前声明的函数)。这也可能是eval结构内部发生的错误的任何其它号码。

According to the manual

如果有解析错误的评估代码,eval()返回FALSE和下面的代码的执行正常继续。使用set_error_handler()不可能在eval()中发现解析错误。

目前尚不清楚为什么你选择使用eval都在这里,但下侧之一,等等,是你通常无法轻松地调试此类错误的eval内。如果你跑到外面这个代码eval你会马上看到解析错误。

+0

谢谢。据我所看到的, “ifelse” 是以下功能:ifelse($表达,$ returntrue,$ returnfalse = “”)函数 { \t如果($表情!) \t { \t \t回$ returnfalse; \t} \t其他 \t { \t \t回$ returntrue; \t} } –

+0

因此,检查你的'eval'代码的返回值,如果它返回'false',那么你仍然有一些其他的错误。你需要调试它的eval之外,如果它是一个语法错误或其他错误尾巴您的错误日志或只需打开显示错误。就像我说的那样,'eval'内部的错误并不总是显而易见的,调试绝对不令人愉快。 – Sherif