2013-06-16 2 views
0

Я вынимаю данные из десятка различных текстовых полей в один многомерный массив, но я хотел бы, чтобы ключ был создан только в том случае, если есть элементы для добавления к Это. Пример:Проверка наличия каждой переменной перед добавлением ее в массив

$colors = array(
    'red'  => $options['red_users'], 
    'orange' => $options['orange_users'], 
    'green' => $options['green_users'] 
); 

Предположим, что нет данных в поле ввода «orange_users». Кроме запуска условной проверки по каждой переменной, например ...

if (!$options['orange_users']) {

... как я могу эффективно проверить существует, что данные для каждого поля ввода я вытягивать из?

+0

'Еогеасп ($> Параметры Справка-как $ X) {...} ' –

+0

« За исключением выполнения условной проверки для каждой переменной »- условная проверка каждой переменной - это то, что вам нужно, если вы действительно хотите проверить, что каждая переменная не пуста. – kuujo

+0

В вашем примере вы в основном копируете свой массив, меняя ключи. Поэтому в этом конкретном случае наиболее эффективным было бы использовать только ваш исходный массив (или поместить весь массив без изменений в другой массив, если вы присоединяетесь к нескольким массивам). – jeroen

ответ

2

Самый простой способ сделать это с тройным если

$replacements = array(
    'red'  => isset($vbulletin->options['red_users'])?$vbulletin->options['red_users']:null, 
    'orange' => isset($vbulletin->options['orange_users'])?$vbulletin->options['orange_users']:null, 
    'green' => isset($vbulletin->options['green_users'])?$vbulletin->options['green_users']null 
); 

Тогда отсеять пустые значения просто использовать array_filter

$replacements = array_filter($replacements); 
+0

Вот что я искал. Благодарю. Хотя, я заметил, что вы сказали «самый легкий». Разве это означает, что это не самый эффективный, или что есть лучший способ? – daveycroqet

+0

, вы должны использовать isset (или empty или array_key_exists) для тестирования или вы получите уведомления о запуске в случае, если он не существует. и это обозначение, которое у вас есть, вернет значение для красного цвета, если значение для красного не установлено, поэтому не имеет смысла – Orangepill

+1

Формат для тернарного значения: '(выражение? истинное значение: ложное значение)' – Orangepill

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