У меня есть переменная, входящая в форму, и из-за плохого дизайна оригинальным разработчиком форма будет отправлять значения элемента пустой формы как '' (пустые одинарные кавычки), это наводит хаос с некоторыми запросами, которые мне приходится писать, потому что функции читают их как значения. Я написал функцию для установки любых экземпляров '' в false, главным образом потому, что просто захват, если значение false, не работает. Я переписал функцию рекурсивной, чтобы развернуть ее в вложенные массивы.Рекурсивная функция PHP, не задающая вложенные массивы
function validateVars($vars){
foreach($vars as $k => $v){
is_array($k) ? validateVars($k) : $vars[$k] = ($v == '' ? FALSE : $v);
}
return $vars;
}
проблема, она устанавливает все индексы с «» в качестве значения к ложному, как и должно быть, но это не на самом деле происходит в массивы, чтобы установить их значение. Вот пример свалка:
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"
}
Эта одна линия является doozy. –