如何知道行中是否包含任何值

时间:2018-06-23 10:17:35

标签: php html mysql

假设我要从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);
?>

2 个答案:

答案 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 } ?>

检查上面的代码,它只会显示任何具有至少一个值的列,否则页面的标题和内容将不会出现。