Выходные значения массива, только если они не пустые или не равны нулю - PullRequest
0 голосов
/ 01 февраля 2019

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

В массиве я присваиваю:

$attributes [
    'glutenfree'     => getPublicClassificationsDescription($classifications, ARTICLE_GLUTENFREE),
    'lactosefree'    => getPublicClassificationsDescription($classifications, ARTICLE_LACTOSEFREE),
    'flavouringfree' => getPublicClassificationsDescription($classifications, ARTICLE_FLAVOURINGFREE),
    'corerange'      => getPublicClassificationsDescription($classifications, ARTICLE_CORERANGE),
    'engro'          => getPublicClassificationsDescription($classifications, ARTICLE_ENGRO),
    'vegan'          => getPublicClassificationsDescription($classifications, ARTICLE_VEGAN),
...
];

и еще много других атрибутов.Я хочу, чтобы вывод выводился только в CSV, если он не пустой и не нулевой.

Прямо сейчас я получаю результат, подобный следующему:

glutenfree=,lactosefree=,flavouringfree=,corerange=,engro=,vegan=No,...

Мне нужен выводвсе, что пусто / пусто, должно быть пропущено, но должно быть то, что имеет значение.В этом примере:

vegan=No,...

Например, если я пытаюсь использовать «empty» или «isset», он не работает, и я получаю пустую страницу без ошибок.

$glutenfree = getPublicClassificationsDescription($classifications, ARTICLE_GLUTENFREE);

$attributes [
    if (!empty($glutenfree)) {
        'glutenfree'     => $glutenfree,
        'lactosefree'    => getPublicClassificationsDescription($classifications, ARTICLE_LACTOSEFREE),
        'flavouringfree' => getPublicClassificationsDescription($classifications, ARTICLE_FLAVOURINGFREE),
        'corerange'      => getPublicClassificationsDescription($classifications, ARTICLE_CORERANGE),
        'engro'          => getPublicClassificationsDescription($classifications, ARTICLE_ENGRO),
        'vegan'          => getPublicClassificationsDescription($classifications, ARTICLE_VEGAN),
        ...
    }
];

Ответы [ 2 ]

0 голосов
/ 01 февраля 2019

Самое простое решение (самое простое, как при минимальной модификации существующего кода) состоит в том, чтобы просто

$attributes = array_filter($attributes);

перед преобразованием массива в строку.

0 голосов
/ 01 февраля 2019

Вам нужно проверить, является ли переменная пустой, перед отправкой данных в массив, например:

#first, create an empty array
$attributes = array();
#get lactose value
$lactose_value = getPublicClassificationsDescription($classifications, ARTICLE_LACTOSEFREE);
#check if not empty string
if ($lactose_value !='') {
  #pushing to array
  $attributes['lactosefree'] = $lactose_value;
}

эту процедуру можно улучшить с помощью инструкции foreach.

$attributes = array()
#all fields now are inside an array
$fields = [ARTICLE_GLUTENFREE=>'glutenfree', ARTICLE_LACTOSEFREE=>'lactosefree',
          ARTICLE_FLAVOURINGFREE=>'flavouringfree', ARTICLE_CORERANGE=>'corerange' ,
          ARTICLE_ENGRO=>'engro', ARTICLE_VEGAN=>'vegan' ];
#iterating
$foreach($fields as $key=>$field) {
  #getting the value
  $arr_value = getPublicClassificationsDescription($classifications, $key);
  #check if not empty string
  if ($arr_value !='') {
    $attributes[$field] = $arr_value;
  }
}

Спасибо Не паникуйте за ваш вклад.Спасибо mickmackusa за вашу ревизию.

...