1+ for Svisstack! ;)
下面是函數,如果有人希望它:
function gettype_fromstring($string){
// (c) José Moreira - Microdual (www.microdual.com)
return gettype(getcorrectvariable($string));
}
function getcorrectvariable($string){
// (c) José Moreira - Microdual (www.microdual.com)
// With the help of Svisstack (http://stackoverflow.com/users/283564/svisstack)
/* FUNCTION FLOW */
// *1. Remove unused spaces
// *2. Check if it is empty, if yes, return blank string
// *3. Check if it is numeric
// *4. If numeric, this may be a integer or double, must compare this values.
// *5. If string, try parse to bool.
// *6. If not, this is string.
$string=trim($string);
if(empty($string)) return "";
if(!preg_match("/[^0-9.]+/",$string)){
if(preg_match("/[.]+/",$string)){
return (double)$string;
}else{
return (int)$string;
}
}
if($string=="true") return true;
if($string=="false") return false;
return (string)$string;
}
我用這個函數知道X的個數爲Y.
例的多:
$number=6;
$multipleof=2;
if(gettype($number/$multipleof)=="integer") echo "The number ".$number." is multiple of ".$multipleoff.".";
但是我工作的框架總是將輸入變量作爲字符串返回。
你有一些額外的代碼。 '空'已經測試了一個空字符串。你爲什麼使用'|| $ striing ==「」'?另外,你正在將一個字符串轉換爲一個字符串。 PHP知道''「'是一個字符串。該行可以被重寫爲:'if(empty($ string))return「」'。另外,執行'return(bool)true/false'是沒有意義的。 'true'和'false'已經是布爾值;他們不需要被鑄造。 – ryeguy 2010-04-22 15:24:46
謝謝ryeguy;) – CuSS 2010-04-22 15:29:55