我有一個變量集從一個表單進來,由於原始開發人員的糟糕設計,表單將提交空的表單元素值爲''(空單引號),這嘔吐我不得不寫一些查詢,因爲函數將這些查詢看作是值。我寫了一個函數來設置''的任何實例爲false,主要是因爲只是捕獲值爲false是行不通的。我重新編寫函數以遞歸以深入到嵌套數組。PHP的遞歸函數沒有設置嵌套數組
function validateVars($vars){
foreach($vars as $k => $v){
is_array($k) ? validateVars($k) : $vars[$k] = ($v == '' ? FALSE : $v);
}
return $vars;
}
的問題是,它集各項指標與「」的值設置爲false,因爲它應該,但它實際上並沒有進入陣列設置它們的值。下面是一個示例轉儲:
array(14) {
["title"]=> string(3) "JLR"
["issue"]=> array(3) {
["jobs"]=> string(11) "66055,66056"
["Ids"]=> string(0) ""
["DateRange"]=> string(0) "" }
["article"]=> array(2) {
["Jobs"]=> string(0) ""
["Ids"]=> string(0) "" }
["issueDateFields"]=> string(11) "DateCreated"
["articleDateRange"]=> bool(false)
["articleDateFields"]=> string(11) "DateCreated"
["AdsJobs"]=> bool(false)
["FMBMJobs"]=> bool(false)
["AdsIds"]=> bool(false)
["FMBMIds"]=> bool(false)
["adsDateRange"]=> bool(false)
["adsDateFields"]=> string(11) "DateCreated"
["fmbmDateRange"]=> bool(false)
["fmbmssueDateFields"]=> string(11) "DateCreated"
}
這一行是一個很酷的。 – 2014-08-29 15:03:11