-2

我最近在我的代码中遇到了一个奇怪的问题。我需要检查 if 语句中的变量值,但它总是失败,值是(假),在回显值后一切正常。

示例(我不记得确切的代码):

for ($i=0; $i<=$limit; $i++) {
   if ($object->data[$i]['name']) {
      echo 'name: '.$object->data[$i]['name'];
   }
}

上面的脚本总是返回 false(不显示用户名)

但是下面的脚本有效(即使我评论了 echo 语句)

for ($i=0; $i<=$limit; $i++) {
   // echo $object->data[$i]['name'];
   if ($object->data[$i]['name']) {
      echo 'name: '.$object->data[$i]['name'];
   }
}

这发生在任何人身上吗?是否有一个原因?

好的...这是原始代码:

<?php if ( $data->apartments[$i]['price']['price1']->value ) { ?>
<div class="prices">
   <table border="0" width="100%" cellpadding="0" style="border-collapse: collapse">
       <tr>
           <td colspan="2" style="border-bottom: 1px dashed #E36300">
               <h3>PRICE LIST</h3>
           </td>
       </tr>
       <tr><td>&nbsp;</td><td>&nbsp;</td></tr>

   <?php

   //$data->apartments[$i]['price']['price_date1']->value;
   //$data->apartments[$i]['price']['price_date2']->value;
   //$data->apartments[$i]['price']['price_date3']->value;
   //$data->apartments[$i]['price']['price_date4']->value;
   //$data->apartments[$i]['price']['price_date5']->value;
   //$data->apartments[$i]['price']['price_date6']->value;
   //$data->apartments[$i]['price']['price_date7']->value;
   //$data->apartments[$i]['price']['price_date8']->value;
   //$data->apartments[$i]['price']['price_date9']->value;

   //$data->apartments[$i]['price']['price1']->value;
   //$data->apartments[$i]['price']['price2']->value;
   //$data->apartments[$i]['price']['price3']->value;
   //$data->apartments[$i]['price']['price4']->value;
   //$data->apartments[$i]['price']['price5']->value;
   //$data->apartments[$i]['price']['price6']->value;
   //$data->apartments[$i]['price']['price7']->value;
   //$data->apartments[$i]['price']['price8']->value;
   //$data->apartments[$i]['price']['price9']->value;

   for ( $pc=0; $pc<=10; $pc++ ) {

       if ( $data->apartments[$i]['price']['price_date'.$pc]->value ) {
           echo "<tr>";
           echo "<td style='border: 1px solid #E36300' align='left' valign='top' width='50%'>".$data->apartments[$i]['price']['price_date'.$pc]->value."</td>";
           echo "<td style='border: 1px solid #E36300' align='right' valign='top' width='50%'>".$data->apartments[$i]['price']['price'.$pc]->value." ".$data->apartments[$i]['price']['price_currency']->value."</td>";
           echo "</tr>";
       } 
   }
   ?>

   </table>
</div>
<?php } ?>
4

1 回答 1

0

问题可能是您尝试回显/输出并因此检查的 var 是评估为false的东西。请注意,有几件事可能评估为假,即使 var 已填充/非空。即0null等。

要检查是否设置了 var,请使用 isset()。而不仅仅是 if($var)..

但是,正如上面的评论所说,这只是一个猜测。您必须向我们/我提供确切的代码才能确定。

于 2013-03-07T14:12:17.073 回答