2014-02-06 64 views
0

試圖找到一種方法,將變量傳遞爲準則傳得變到功能爲「標準」(imap_sort)

$_GET['sort'] = (@!$_GET['sort']) ? SORTARRIVAL : SORT . $_GET['sort']; 
$sort = imap_sort ($inbox, $_GET['sort'] , 1, SE_UID); 

如果我通過一個URL,如... /?排序=主題

我收到一個錯誤。

警告:imap_sort()預計參數2長,串給出

+0

您將SORT作爲字符串傳遞; SORTARRIVAL等實際上是具有整數值的常數(即1,2,3等)。 – Tularis

回答

0

由於您的$ _GET值是包含名稱要使用常量的一個字符串,IMAP預期不斷的,你需要打開一個到另一個(即你說「SORTARRIVAL」,而IMAP預計SORTARRIVAL(這是像1或2或3或其他)的

可以使用constant()函數來查找常量,如下所示:

if(isset($_GET['sort']) && constant('SORT' . $_GET['sort']) !== null) { 
    // we check if we have a value in $_GET['sort'] and also check if a constant with that name exists 
    $sort = constant('SORT' . $_GET['sort']) 
} else { 
    // default value in case the constant didn't exist or $_GET['sort'] was empty 
    $sort = SORTARRIVAL; 
} 
$sort = imap_sort ($inbox, $sort, 1, SE_UID); 
+0

謝謝你,像一個魅力工作。 – Carlos