我有一个变量集从一个表单进来,由于原始开发人员的糟糕设计,表单将提交空的表单元素值为''(空单引号),这呕吐我不得不写一些查询,因为函数将这些查询看作是值。我写了一个函数来设置''的任何实例为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