PHP Вывод NULL / пробелов - PullRequest
       40

PHP Вывод NULL / пробелов

0 голосов
/ 27 апреля 2020

Я пытаюсь вывести из mysql, используя php. Выводимый мной запрос SQL содержит несколько объединений, и некоторые значения имеют значение NULL. Когда я повторяю вывод, я получаю пустые места для значений NULL. Как мне избавиться от пустого пространства? У меня есть разрывы строк между каждым значением, которое я хочу вывести, но значения NULL просто помещают пустое пространство. Поэтому мой вывод выглядит примерно так:

Как это выглядит

Дейв Смит
Тема 1

Тема 3

Джон Смит
Тема 1
Тема 2

Тема 4

Как бы я хотел, чтобы это выглядело

Дейв Смит
Тема 1
Тема 3

Джон Смит
Тема 1
Тема 2
Тема 4

Я пробовал некоторые из php функций обрезки, но, похоже, ни одна из них не работает. Соответствующий код ниже.

$resultSet = $db->query ("...my query");  

echo $resultSet -> num_rows;

While($rows = $resultSet ->fetch_assoc())

{
  $FirstName = ($rows['First_Name']);
  $Surname =   ($rows['Surname']);
  $subject1 = ($rows['subject1']);
  $subject2 = ($rows['subject2']);
  $subject3 = ($rows['subject3']);
  $subject4 = ($rows['subject4']);

  $output .= "<p> $FirstName $Surname <br/> Chosen Subjects <br/> $subject1 <br/> $subject2 <br/> 
  $subject3 <br/>  $subject4 </p>";
 }

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Когда я повторяю вывод, я получаю пустые пробелы для значений NULL

$subject1 = ($rows['subject1']);
$subject2 = ($rows['subject2']);
$subject3 = ($rows['subject3']);
$subject4 = ($rows['subject4']);

  $output .= "<p> $FirstName $Surname <br/> Chosen Subjects <br/> $subject1 <br/> 
  $subject2 <br/>  $subject3 <br/>  $subject4 </p>";

Причина вашего пустого пространства в том, что вы вводите <br/> независимо от того, что касается любого значения PHP.

Предлагаемая альтернатива:

  • Поместить значения в массив.
  • Очистить любые falsey / null значения из массива
  • implode массив в окончательную строку.

a) Поместите значения в массив:

$subject[1] = $rows['subject1'];
$subject[2] = $rows['subject2'];
$subject[3] = $rows['subject3'];
$subject[4] = $rows['subject4'];

b) Очистите null значения эталон

$subjectOutput = array_filter($subject, 'strlen');

Примечание. Если вас не интересуют другие значения falsey, например 0, вы можете просто выполнить еще более простой c array_filter() вызов, например = array_filter($subject);. .

c) Внушить массив.

$subjectString = implode($subjectOutput, '<br/>');

Пример:

$subject[1] = "horses";
$subject[2] = 12;
$subject[3] = 0;
$subject[4] = null;
$subject[5] = "cats";

$subjectOutput = array_filter($subject, 'strlen');

//$subject[1] = "horses";
//$subject[2] = 12;
//$subject[3] = 0;
//$subject[5] = "cats";

/***
 * simply print the sting and voila!
 ***/
$subjectString = implode($subjectOutput, '<br/>');

// $subjectString = "horses<br/>12<br/>0<br/>cats";

 $output .= "<p> $FirstName $Surname <br/> Chosen Subjects <br/> ".$subjectString." </p>";
0 голосов
/ 27 апреля 2020

Вы можете попробовать следующий код:

$output = "<p>{$FirstName} {$Surname}<br/>Chosen Subjects:<br/>";
$output .= (!empty($subject1)) ? "{$subject1}<br/>" : "";
$output .= (!empty($subject2)) ? "{$subject2}<br/>" : "";
$output .= (!empty($subject3)) ? "{$subject3}<br/>" : "";
$output .= (!empty($subject4)) ? "{$subject4}<br/>" : "";
$output .= "</p>";
...