2014-02-05 6 views
1

Я создаю скрипт PHP. Из одной формы я получаю min_salary и max_salary. Я пытаюсь получить их обоих в виде строки в переменной заработной платы, какПроблемы с операторами PHP

$salary = "min_salary TO max_salary"; 

Если мин зарплата не указана она должна быть установлена ​​в 0, аналогично, если максимальная зарплата не указана она должна быть установлена ​​в * ,

Я написал код ниже, но ничего не получаю, если ни одно из полей не предоставляется.

$salary = (isset($data['min_salary']) ? $data['min_salary'] : 0) .' TO '. (isset($data['max_salary']) ? $data['max_salary']:'*'); 

Кроме того, я не хочу использовать if then else заявления.

+0

Код выглядит хорошо для меня, то, что вы имеете в виду «я написал ниже код, но ничего не получаю когда какое-либо поле не предоставляется ». - какие выходы var_dump ($ зарплата) – Flixer

+1

предположим, что поле ввода min_salary осталось пустым и max_salary задано 10, тогда выход должен быть как «0 TO 10», но я получаю только «TO 10» :( –

+0

Существует разница между методами «isset» «empty» - имейте это в виду. Если вы хотите проверить, является ли пустым, замените «isset (..» на «! empty (...» – Flixer

ответ

2

Эта линия будет производить этот код без использования если/другое заявления (даже если ternery оператор действительно синтаксический сахар вокруг, если/иначе)

$salary = max(0,$data['min_salary']) . ' TO ' . ($data['max_salary'] > 0 ? $data['max_salary'] : '*'); 

Вы действительно не хотите же сценарии для обоих значений как следует отложить до 0, а другой - до *. Проблема с isset():

(isset($data['min_salary']) ? $data['min_salary'] : 0) 

является то, что переменная может быть установлена ​​в пустую строку $data = '' которая будет возвращать true. Я бы не хотел, чтобы это случилось.

+1

Правильно, это может быть другой альтернативой праву но я получил ответ, спасибо за вашу помощь. –

1

Cast значения в целое:

$salary = (isset($data['min_salary']) ? (int)$data['min_salary'] : 0).' TO '... 

То же самое для второй части ...

+1

Спасибо, но не работает В любом случае у меня есть ответ от Flixer. –

-1

Ваше утверждение справедливо и предоставляет строку, она работает как есть на моем PHP-сервере (PHP 5.3 .7) с $ данными, не определенными или определенными и содержащими только одно значение.

Возможно, именно так вы используете $ зарплату, которая вызывает беспокойство.

2

Благодаря Flixer и Феликс за ваш ответ он работает отлично после того, как я заменил IsSet с! Пустым

$salary = (!empty($data['min_salary']) ? $data['min_salary'] : 0).' TO '. (!empty($data['max_salary']) ? $data['max_salary']:'*'); 
Смежные вопросы