Есть ли цикл, который будет исключать переменную, когда переменная равна нулю при отображении на веб-странице в php? - PullRequest
1 голос
/ 05 апреля 2019

Я извлекаю информацию из базы данных mysql как ассоциативный массив.Некоторые переменные будут NULL, если нет информации (например, номер телефона или вторая адресная строка).Я извлекаю информацию и просто передаю ее на веб-страницу.Тем не менее, позиции, которые содержат возвращаемое значение Null, остаются пустыми.Я хотел бы удалить пробел для тех записей, которые имеют значение NULL.

Я попытался создать оператор foreach для цикла по массиву, но он повторяет записи 14 раз подряд, исключая по одной переменной за раз.,

Пример:

База данных состоит из 10 столбцов:

    id = auto increment 
    fname
    lname
    address1
    address2 = NULL
    city
    state
    zip
    officephone = NULL
    mobilephone = NULL

Class :: members ();

После запуска моего PDO я запускаю цикл while и создаю массив $ member:

   while($return = $stmt->fetch(PDO::FETCH_ASSOC)) {

        $member = array(
              $return['fname'],
              $return['lname'],
              $return['address1'],
              $return['address2'],
              $return['city'],
              $return['state'],
              $return['zip'],
              $return['ophone'],
              $return['mphone']);

Я повторяю это на веб-странице в стиле html и css

      echo 

          $member[1] . $member[2].'<br />' .
          $member[3] . '<br />'.
          $member[4] . '<br />'.
          $member[5] . ', ' . $member[6].$member[7].'<br />'.
          $member[8] . '<br />' .
          $member[9] . '<br />'.

Как это выглядит на веб-странице

Insttiing - выполняется через записи до конца, а затем останавливается.

    <?php $abs = array(Class::members()); foreach($mbs as $mb) { echo $mb;}?>

Чтовы видите

    John Smith
    222 One Drive
                   (GAP BECAUSE NULL)
    Somewhere, USA 00000
                   (GAP BECAUSE NULL)
    555555555

Я хочу написать некоторый php-код, чтобы пропустить GAP выше, когда он равен NULL, но включить его, когда он не равен NULL.

Чтобы это выглядело так:

    John Smith
    222 One Drive
    Somewhere, USA 00000
    555555555

Я попытался создать метод для циклического прохождениярезультаты и пропустите переменную NULL без успеха.

    foreach($member as $key => $value)

    /* variants I have tried in if() statment ($value != NULL), 
    ($value === NULL),($value == 'NULL'), ($value == ""), 
    (empty($value)), ($member[$value] == NULL)*/

    if($value == NULL) {
    continue; }
    }

Это возвращает 14 идентичных результатов oДля каждой записи, и все они имеют пробел.Я также пытался использовать array_filter ($ members).

Любые рекомендации?

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

Только не выводите <BR>, когда не нужно:

$output = $member[1] . $member[2];
$output.= ($output!='' ? '<br/>' : '') . $member[3];
$output.= ($output!='' ? '<br/>' : '') . $member[4];
$output.= ($output!='' ? '<br/>' : '') . $member[5];
$output.= ($output!='' AND ($member[6]!='' OR $member[7]!='') ? ', ' : '') . $member[6] . $member[7];
$output.= ($output!='' ? '<br/>' : '') . $member[8];
$output.= ($output!='' ? '<br/>' : '') . $member[9];
echo $output;

ОБНОВЛЕНИЕ (11 апреля 2019 г.)

Я думаю, что это лучшее решение вашей задачи:

$output = $member[1] . $member[2];
$output.= ($output!='' ? "\n" : '') . $member[3];
$output.= ($output!='' ? "\n" : '') . $member[4];
$output.= ($output!='' ? "\n" : '') . $member[5];
$output.= ($output!='' AND ($member[6]!='' OR $member[7]!='') ? ', ' : '') . $member[6] . $member[7];
$output.= ($output!='' ? "\n" : '') . $member[8];
$output.= ($output!='' ? "\n" : '') . $member[9];

// we replace multiple NewLines with a single NewLine
$output = preg_replace('/\n+/', "\n", $output);
// we trim our string to remove the NewLines on left and write, if any
$output = trim($output);
// we then simply replace all NewLines with <BR>
echo nl2br($output);
0 голосов
/ 05 апреля 2019

Просто попробуйте array_filter(), чтобы удалить Null из вашего $member массива следующим образом -

$member = array_filter($member);

Он удалит логическое значение false, null, '' из значения вашего массива, если оно существует. СМ . Если вы хотите ограничить значение, вы можете использовать любую функцию callback .

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