2013-09-14 5 views
0

Я хочу превратить пустой ввод/строку в null, но, похоже, я не могу заставить ее работать. Ниже класс, который обрабатывает $ _POST,PHP: как превратить пустую строку в нуль

class post 
{ 
    public $data = array(); 

    public function get($param, $default = null) { 
     if (!isset($this->data[$param])) {//not set, return default 
      return $default; 
     } 
     else if(isset($this->data[$param]) && $default === ''){//empty string 
      return null; 
     } 
     return $this->data[$param]; 
    } 

} 

Например,

$post = new post(); 
$test = $post->get('url',''); 
var_dump($test); 

Я получаю это,

string '' (length=0) 

Но я хочу null. Является ли это возможным?

+0

Вы возвращаете '$ default', который равен '' (сначала' if'). Где вы на самом деле используете '$ _POST'? – apartridge

+1

Проверка 'isset ($ this-> data [$ param])' избыточна в вашей 'else if'. –

+0

awww Спасибо за указание. что мне делать? – laukok

ответ

1

В дополнение к @ konsolebox отвечают, вы можете также молча преобразовывать пустые строки в NULL с внутри get() метода:

public function get($param, $default = null) { 
    if ($default === '') { 
     $default = null; 
    } 

    // ... 

Преимущество к тому, что, когда ваше значение по умолчанию является динамическим (передается как переменная), и оно является пустой строкой, оно все равно дает желаемый эффект:

$default = ''; 
$test = $post->get('url', $default); // null 
+0

благодарит за ответ! – laukok

+0

Иногда также лучше не жестко кодировать его: '$ test = $ post-> get ('url', $ default === ''? Null: $ default);' – konsolebox

3

Вы, наверное, не нужно добавить аргумент:

$test = $post->get('url'); 

по умолчанию для него является null в конце концов.

Или же вы можете задать его явно:

$test = $post->get('url', null); 
+0

спасибо за ответ. – laukok

Смежные вопросы