Как заменить пустые элементы в массиве на «ДРУГОЙ»? - PullRequest
1 голос
/ 01 декабря 2008

Мой список (@degree) составлен из команды SQL. Команда NVL в SQL не работает, как и такие тесты, как:

if (@degree[$i] == "")
if (@degree[$i] == " ")
if (@degree[$i] == '')
if (@degree[$i] == -1)
if (@degree[$i] == 0)
if (@degree[$i] == ())
if (@degree[$i] == undef)

$ i - переменная счетчика в цикле for. По сути, он проходит и извлекает из таблицы уникальные степени и в итоге создает ("AFA", "AS", "AAS", "", "BS"). Список не всегда такой длинный, и пустой элемент не всегда находится в этой позиции 3.

Кто-нибудь может помочь?

Я хочу либо проверить во время цикла for, либо после завершения цикла, где находится этот пустой элемент, а затем заменить его словом «OTHER».

Спасибо за что угодно * 1011 Кен *

Ответы [ 3 ]

8 голосов
/ 01 декабря 2008

Прежде всего, i-й элемент массива - это $ deg [$ i], а не @degree [$ i]. Во-вторых, «==» для числовых сравнений - используйте «eq» для лексических сравнений. В-третьих, попробуйте if (defined($degree[$i]))

6 голосов
/ 02 декабря 2008

Все, что сказал Павел. И, если вам нужен пример:

my @degree = ('AFA', 'AS', 'AAS', '', 'BS');

$_ ||= 'OTHER' for @degree;

print join ' ' => @degree;  # prints 'AFA AS AAS OTHER BS'
1 голос
/ 02 декабря 2008

Если в базе данных фактически нет значения, попробуйте COALESCE

SELECT COALESCE(column, 'no value') AS column FROM whatever ...

Это стандартный для SQL способ сделать это.

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