我从mysql数据库中提取信息作为关联数组。如果没有信息(即电话号码或第二地址线),则一些变量将为NULL。我提取信息并将其回显到网页就好了。但是,持有返回Null的位置有一个空白。我想删除那些为NULL的记录的空白。
我试图创建一个foreach语句循环遍历数组,但它连续14次重复记录,一次不包括一个变量。
例:
一个数据库有10列:
id = auto increment
fname
lname
address1
address2 = NULL
city
state
zip
officephone = NULL
mobilephone = NULL
类::成员();
运行我的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 />'.
网页上的内容是什么样的
实例化 - 这将贯穿记录,直到结束然后停止。
<?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代码,当它是NULL时跳过上面的GAP,但是当它不是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个相同结果,并且所有记录都有差距。我也尝试使用array_filter($ members)。
有什么建议?
只是在不需要时不输出<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;
我认为这是您挑战的更好解决方案:
$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);
试试array_filter()
从你的$member
数组中移除Null,就像这样 -
$member = array_filter($member);
如果存在,它将从您的数组值中删除布尔值false
,null,''
。 SEE。如果要限制值,可以使用任何回调函数。