2012-10-22 66 views
0

這裏是我的代碼:PHP數組不工作,多

function prepare_machine($variables) 
{ 
     foreach ($variables AS $varname => $vartype) 
     { 
       if (isset($_REQUEST[$varname])) 
       { 
         $value = $_REQUEST[$varname]; 
         return do_clean($value, $vartype); 
       } 
       else 
         exit; 
     } 
} 

它被稱爲是這樣的:

 
prepare_machine(array('order_by_time' => TYPE_BOOLEAN));

這一切工作正常,但如果你有數組中的許多東西,爲例子;

 
prepare_machine(array('order_by_time' => TYPE_BOOLEAN, 'order_by_date' => TYPE_BOOLEAN));

它只會對第一個做任何事情。

任何人都可以看到我的代碼有什麼問題嗎?

感謝

回答

1

你正在做一個return ...當你發現在你的內循環相匹配。這就是爲什麼它只處理一個。

另外,您應該使用array_key_exists($varname, $_REQUEST),因爲如果$_REQUEST[$varname]爲空,isset($_REQUEST[$varname])將會失敗。

+0

好的,那麼我應該怎麼做而不是返回? – MegaMan

+0

你需要問爲什麼'prepare_machine()'返回'do_clean()'返回的內容。無論答案如何,您都需要重新設計您的代碼。 'prepare_machine()'不能爲每個調用處理多個變量,或者'do_clean()'不需要返回「清除」值。 – staticsan

0

return返回您提供的任何內容,然後退出該功能。您需要以某種方式更改您的功能,以便在處理完所有變量之後只有return s。

+0

那我該怎麼做呢? 謝謝 – MegaMan