Echo placeholder, если поле пустое - PullRequest
1 голос
/ 16 марта 2011

У меня есть вход, в который я хотел бы поместить текст-заполнитель, но , только если его соответствующее значение - пустая строка. Значение, которое должно идти в текстовом поле, выводится из массива PHP, но если это значение пустое, вместо него должен быть отображен заполнитель. На данный момент у меня есть этот код:

&lt?php echo sponsorData('address0') == '' ? 'Address Line 1' : 'Other'; ?>

sponsorData() просто получает материал из массива; это единственный аргумент является ключом. Важным моментом здесь является то, что он возвращает астринг.

Этот код дает странное поведение; Я получаю такие вещи, как Hello worldAddress Line 1, где Hello world - это введенный пользователем текст, а Address Line 1 - это, очевидно, заполнитель. Как ни странно, заполнитель хранится в массиве при отправке.

У меня такой вопрос: может ли кто-нибудь предложить исправление моего троичного оператора или, если это не сработает, сказать мне, чтобы сделать встроенное if утверждение (blegh)?

Спасибо

Ответы [ 4 ]

3 голосов
/ 16 марта 2011

попробуйте следующий код:

<?php echo ((sponsorData('address0') == '') ? 'Address Line 1' : 'Other'); ?>

Феликс

1 голос
/ 16 марта 2011

У вас проблемы с приоритетом операторов.Попробуйте:

<?php echo (sponsorData('address0') == '' ? 'Address Line 1' : 'Other'); ?>

(заключите в скобки оператор троичного оператора).

0 голосов
/ 17 марта 2011

Вы должны учитывать, что sponsorData('address0') может иметь пробелы, поэтому вы можете добавить функцию trim, например:

<?php echo ((trim(sponsorData('address0')) == '') ? 'Address Line 1' : 'Other'); ?>
0 голосов
/ 16 марта 2011

Кажется, у вас все работает нормально, я не думаю, что ошибка в этом. Вот как бы я это сделал:

$address0 = sponsorData('address0');

$address0 = !empty($address0) ? $address0 : 'placeholder';
...