假设我要从MySQL DB显示3行(条目)和3列。
如果所有“行”在每个“列”中都具有所有“值”,那么将显示所有结果。
但可以说1列在任何行(条目)中都没有值,那么我不想显示该列本身。
我正在为此使用PHP。
我的表格示例:
<tr>
<td>Name</td>
<td>Sex</td>
<td>Location</td>
</tr>
上面的代码是表的thead
。在此下方将有一个重复的区域,显示值。
因此,如果在数据库中没有在任何记录中输入“位置”,那么我就不会在结果部分也显示“位置” <td>
。
但是,如果任何1行的“位置”中包含值,那么它也必须显示在thead
和结果tr
中。
记录集:
<?php
mysql_select_db($database_con1, $con1);
$query_Person = "SELECT * FROM Persons";
$Person = mysql_query($query_Person, $con1) or die(mysql_error());
$row_Person = mysql_fetch_assoc($Person);
$totalRows_Person = mysql_num_rows($Person);
?>
答案 0 :(得分:0)
您可以使用array_column()
组成“ Location” 列的数组,然后使用array_filter()
进行检查。
假设您的多维数组称为$data
:
$location = array_column($data, 'Location');
$no_location = !array_filter($location);
// For testing
var_dump($no_location);
在没有回调的情况下使用array_filter()
将删除 falsy 值。由于空数组也是 falsy ,因此将函数的结果另存为布尔值将使您知道是否可以删除此列。
注意:如果每行“位置” 列为空,它将返回true
。
答案 1 :(得分:0)
这是一种解决方案:-
假设您已经在类文件中编写了一个仅从该表中获取所有记录的函数,那么它将显示如下:
<?php
$name_stat = 0 ;
$gender_stat = 0 ;
$loc_stat = 0 ;
$get_results = $class_variable->getResults() ;
foreach($get_results as $key=>$val){
if($val['name'] != ''){
$name_stat = 1 ;
}
if($val['sex'] != ''){
$gender_stat = 1 ;
}
if($val['location'] != ''){
$loc_stat = 1 ;
}
}
?>
<tr>
<?php if($name_stat == 1){?><td>Name</td><?php } ?>
<?php if($gender_stat == 1){?><td>Sex</td><?php } ?>
<?php if($loc_stat == 1){?><td>Location</td><?php } ?>
</tr>
<?php
foreach($get_results as $key=>$val){?>
<tr>
<?php if($val['name'] != ''){?><td><?=$val['name'];?></td><?php } ?>
<?php if($val['sex'] != ''){?><td><?=$val['sex'];?></td><?php } ?>
<?php if($val['location'] != ''){?><td><?=$val['location'];?></td><?php } ?>
</tr>
<?php } ?>
检查上面的代码,它只会显示任何具有至少一个值的列,否则页面的标题和内容将不会出现。