PHP - если утверждение проблемы.Разница между 0, NULL и "" - PullRequest
0 голосов
/ 01 марта 2012

У меня есть множество вариантов сайта.

Тогда у меня есть функция, которая проверяет все данные, представленные моими пользователями, используя цикл foreach. Вы не будете знать, откуда взято большинство переменных, но в данном случае это не важно:

function settings_validation($input) {
    $settings = my_array();   
    foreach ($settings as $setting) {

       //this function leaves the old field's value if there's no input
       if($type == 'something' && empty($input[$id])) {
           $valid_input[$id] = $option[$id];
       } 
       //this function updates the field if input is not NULL
       else if($type == 'something' && !empty($input[$id])) {
           $valid_input[$id] = $input[$id];
    }   

    return $valid_input;
};    

$ input - это массив всех полей формы, созданных после отправки, если поле пустое, его значение равно "".

Теперь вот беда.

Когда я хочу стереть одно из полей, это невозможно - когда я не оставляю данные в этом поле и отправляю форму, он не отправляет данные и всегда запускает первый оператор if и покидает поле в состоянии перед удалением.

Если я удаляю первый оператор if, а затем отправляю форму, он отправляет новые данные в отредактированные мной опции и стирает все остальные (так как их входные данные $ пусты).

Я не уверен, какие проверки следует делать, чтобы определить разницу между пустым $ input, сгенерированным функцией, и пустым $ input, созданным действием пользователя?

Используемая мной функция settings_validation () является обратным вызовом для другой функции, называемой register_setting () , я спрашиваю здесь, потому что не в WPSE это скорее проблема, связанная с PHP.

1 Ответ

0 голосов
/ 02 марта 2012

Ответ был невероятно простым и довольно сложным:

function settings_validation($input) {
$settings = my_array();   
foreach ($settings as $setting) {

   if($type == 'something' && empty($input[$id])) {
       //nothing here and everything is fine
   } 

   else if($type == 'something' && !empty($input[$id])) {
       $valid_input[$id] = $input[$id];
   }   

return $valid_input;
};    

Спасибо за помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...