Php Foreach正在跳过一些字段

Php Foreach正在跳过一些字段,php,Php,我的foreach跳过了一些字段,我不知道为什么,但它跳过了数据库中的字段False这是我的代码: $sql2="SELECT Card.* FROM Person INNER JOIN Card ON Person.PersonUId = Card.PersonUId WHERE Card.PersonUId = '$id'

我的foreach跳过了一些字段,我不知道为什么,但它跳过了数据库中的字段
False
这是我的代码:

            $sql2="SELECT     Card.*
                    FROM         Person INNER JOIN
                    Card ON Person.PersonUId = Card.PersonUId
                    WHERE Card.PersonUId = '$id'
                    ORDER BY CardNr ASC";
            $stm2 = $conn->query($sql2);

            if(!$stm2)
            {
                echo "";
            }else{
            $rowsCabeçalho = $stm2->fetch();
                    $CType = isset($rowsCabeçalho['CardType']) ? $rowsCabeçalho['CardType'] : NULL;
                    $CNr = isset($rowsCabeçalho['CardNr']) ? $rowsCabeçalho['CardNr'] : NULL;
                    $CValFrom = isset($rowsCabeçalho['ValidFrom']) ? $rowsCabeçalho['ValidFrom'] : NULL;
                    $CValUntil = isset($rowsCabeçalho['ValidUntil']) ? $rowsCabeçalho['ValidUntil'] : NULL;
                    $CLTCCNr = isset($rowsCabeçalho['LastTccNr']) ? $rowsCabeçalho['LastTccNr'] : NULL;
                    $CLTCCTime = isset($rowsCabeçalho['LastTccTime']) ? $rowsCabeçalho['LastTccTime'] : NULL;
                    $CIOEntryOff = isset($rowsCabeçalho['IoCheckEntryOff']) ? $rowsCabeçalho['IoCheckEntryOff'] : NULL;
                    $CIOExitOff = isset($rowsCabeçalho['IoCheckExitOff']) ? $rowsCabeçalho['IoCheckExitOff'] : NULL;
                    $CICoded = isset($rowsCabeçalho['IsCoded']) ? $rowsCabeçalho['IsCoded'] : NULL;
                    $CCodingDate = isset($rowsCabeçalho['CodingDate']) ? $rowsCabeçalho['CodingDate'] : NULL;
                    $CPrice = isset($rowsCabeçalho['Price']) ? $rowsCabeçalho['Price'] : NULL;
                    $CPricePyed = isset($rowsCabeçalho['PricePayed']) ? $rowsCabeçalho['PricePayed'] : NULL;
                    $CDeposit = isset($rowsCabeçalho['Deposit']) ? $rowsCabeçalho['Deposit'] : NULL;
                    $CDepositPayed = isset($rowsCabeçalho['DepositPayed']) ? $rowsCabeçalho['DepositPayed'] : NULL;
                    $CLastCCode = isset($rowsCabeçalho['LastLicenseCountryCode']) ? $rowsCabeçalho['LastLicenseCountryCode'] : NULL;
                    $CLastLPlate = isset($rowsCabeçalho['LastLicensePlate']) ? $rowsCabeçalho['LastLicensePlate'] : NULL;
                    $CIOOffNextUse = isset($rowsCabeçalho['IoCheckOffNextUse']) ? $rowsCabeçalho['IoCheckOffNextUse'] : NULL;
                    $CLastEntryTime = isset($rowsCabeçalho['LastEntryTime']) ? $rowsCabeçalho['LastEntryTime'] : NULL;
                    $CLastExitTime = isset($rowsCabeçalho['LastExitTime']) ? $rowsCabeçalho['LastExitTime'] : NULL;
                    $CLastPTime = isset($rowsCabeçalho['LastPayTime']) ? $rowsCabeçalho['LastPayTime'] : NULL;

                    echo '
                    <div class="informaltable">
        <p></p>
        <table cellspacing="2" border="0">

            <thead>
                <tr>';?>
<?php 

$tableHeaders = [
  ['variable' => 'CType', 'title' => 'Tipo'],
  ['variable' => 'CNr', 'title' => 'Nr.'],
  ['variable' => 'CValFrom', 'title' => 'Válido Desde'],
  ['variable' => 'CValUntil', 'title' => 'Válido Até'],
  ['variable' => 'CLTCCNr', 'title' => 'Nº Último Terminal'],
  ['variable' => 'CLTCCTime', 'title' => 'Hora no Último Terminal'],
  ['variable' => 'CIOEntryOff', 'title' => 'IO na Entrada OFF'],
  ['variable' => 'CIOExitOff', 'title' => 'IO na Saída OFF'],
  ['variable' => 'CICoded', 'title' => 'Codificado'],
  ['variable' => 'CCodingDate', 'title' => 'Data de Codificação'],
  ['variable' => 'CPrice', 'title' => 'Valor'],
  ['variable' => 'CPricePyed', 'title' => 'Valor Pago'],
  ['variable' => 'CDeposit', 'title' => 'Depósito'],
  ['variable' => 'CDepositPayed', 'title' => 'Depósito Pago'],
  ['variable' => 'CLastCCode', 'title' => 'Último País de Matricula'],
  ['variable' => 'CLastLPlate', 'title' => 'Última Matricula'],
  ['variable' => 'CIOOffNextUse', 'title' => 'IO Off Na Próxima Saída'],
  ['variable' => 'CLastEntryTime', 'title' => 'Última Entrada'],
  ['variable' => 'CLastExitTime', 'title' => 'Última Saída'],
  ['variable' => 'CLastPTime', 'title' => 'Último Pagamento'],
];

foreach($tableHeaders as $tableHeader) : 
  $variable = $tableHeader['variable'];
  if (isset($$variable) AND !is_null($$variable) AND !empty(trim($$variable))) :
?>
  <th align="right"><?= $tableHeader['title']; ?></th>
<?php
  endif;
endforeach;
?>
$sql2=“选择卡片*
从人内连接
Person.PersonUId上的卡=Card.PersonUId
其中Card.PersonUId='$id'
CardNr ASC订购”;
$stm2=$conn->query($sql2);
如果(!$stm2)
{
回声“;
}否则{
$rowsCabeçalho=$stm2->fetch();
$CType=isset($rowsCabeçalho['CardType'])?$rowsCabeçalho['CardType']:空;
$CNr=isset($rowsCabeçalho['CardNr'])?$rowsCabeçalho['CardNr']:空;
$CValFrom=isset($rowsCabeçalho['ValidFrom'])?$rowsCabeçalho['ValidFrom']:NULL;
$CValUntil=isset($rowsCabeçalho['ValidUntil'])?$rowsCabeçalho['ValidUntil']:NULL;
$CLTCCNr=isset($rowsCabeçalho['LastTccNr'])?$rowsCabeçalho['LastTccNr']:空;
$CLTCCTime=isset($rowsCabeçalho['LastTccTime'])?$rowsCabeçalho['LastTccTime']:空;
$cionentryoff=isset($rowsCabeçalho['IoCheckEntryOff'])?$rowsCabeçalho['IoCheckEntryOff']:NULL;
$CIOExitOff=isset($rowsCabeçalho['IOCHECKEXITOF'])?$rowsCabeçalho['IOCHECKEXITOF']:NULL;
$CICoded=isset($rowsCabeçalho['ISCODE'])?$rowsCabeçalho['ISCODE']:空;
$CCodingDate=isset($rowsCabeçalho['CodingDate'])?$rowsCabeçalho['CodingDate']:空;
$CPrice=isset($rowsCabeçalho['Price'])?$rowsCabeçalho['Price']:空;
$CPricePyed=isset($rowsCabeçalho['PricePayed'])?$rowsCabeçalho['PricePayed']:NULL;
$CDeposit=isset($rowsCabeçalho['Deposit'])?$rowsCabeçalho['Deposit']为空;
$CDepositPayed=isset($rowsCabeçalho['DepositPayed'])?$rowsCabeçalho['DepositPayed']:NULL;
$CLastCCode=isset($rowsCabeçalho['LastLicenseCountryCode'])?$rowsCabeçalho['LastLicenseCountryCode']:NULL;
$CLastLPlate=isset($rowsCabeçalho['LastLicensePlate'])?$rowsCabeçalho['LastLicensePlate']:NULL;
$CIOOffNextUse=isset($rowsCabeçalho['IoCheckOffNextUse'])?$rowsCabeçalho['IoCheckOffNextUse']:NULL;
$CLastEntryTime=isset($rowsCabeçalho['LastEntryTime'])?$rowsCabeçalho['LastEntryTime']:NULL;
$CLASTEXITIME=isset($rowsCabeçalho['LASTEXITIME'])?$rowsCabeçalho['LASTEXITIME']:NULL;
$CLastPTime=isset($rowsCabeçalho['LastPayTime'])?$rowsCabeçalho['LastPayTime']:空;
回声'

';?>
这是db
IoCheckEntryOff
中的
$cionentryoff
字段和db`IoCheckExitOff中的
$cionexitoff
字段的SS

当我到达我的foreach并开始调整
时,不知何故它跳过了这两行,正如您在这个屏幕截图上看到的:


有人能帮我解决这个问题吗?我不知道当它跳过那些
False
字段时错误在哪里,因为当我将它们设置为
True
时,它们会出现,但是当它们为
False
时,它们不会出现。

你能尝试删除
空的
检查循环吗?
据我所知,您的条件排除了具有bool false值的列。请记住
empty(0)==true
empty(false)==true

<?php foreach($tableHeaders as $tableHeader): 
  $variable = $tableHeader['variable'];
  if (isset($$variable) && !is_null($$variable)): ?>
    <th align="right"><?= $tableHeader['title']; ?></th>
  <?php endif; ?>
<?php endforeach;?>

$$variable
$$variable
?@Nawin variable variables。这不只是
!清空
检查,不包括空值吗?我强烈建议您重新考虑使用变量。@Nawin它必须是
$$variable
,否则它只会将所有内容发送到屏幕上。哈哈,我知道@ficuscr,我在放置
时运行他的代码>$$variable
它显示为空。这就是为什么我要问这是不是打字错误?通过这样做,字段在db中出现并且也出现了
NULL
,这些字段不应该出现。我更新了我的答案,我们再次尝试解决
false
值,而不是那些处于NULL状态的值。我重新添加了
is\u NULL
。再试一次。我的坏@ficuscr在再次检查后,显示的和不应该显示的字段是两个,在DB中为
0
(零),另一个为
False
,空字段不会与更新的代码一起显示。“空字段不会与更新的代码一起显示”…不知道这是否与
!is_null($$variable)
有关?当删除
!is_null($$variable)
时,我只使用
isset($$variable)
得到相同的结果,所以我只需要删除假值和有空格的字段,这就是为什么我使用
!empty(trim($$variable))
要删除表中没有任何内容的空格,请删除空格
<?php
$a = ['bool false' => false,
      'empty string' => '',
      'zero' => 0,
      'null' => null,
      'actual value' => '123'
     ];

foreach ($a as $k => $v) {      
    if ($v === 0) {
        echo "$k ($v) -> ZERO";
    } elseif ($v === false) {
        echo "$k ($v) -> FALSE";
    } elseif (is_null($v)) {
        echo "$k ($v) -> NULL";
    } elseif (empty($v)) {
        echo "$k ($v) -> EMPTY STRING";
    } else {
        echo "$k ($v) -> SOME VALUE";
    }       
}

> bool false () -> FALSE
> empty string () -> EMPTY STRING
> zero (0) -> ZERO
> null () -> NULL
> actual value (123) -> SOME VALUE