2015-11-19 67 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