-2

最近、コードに奇妙な問題がありました。if ステートメントで変数値を確認する必要がありましたが、常に失敗し、値が (false) で、値をエコーし​​た後、すべてが機能しました。

例(正確なコードを思い出せません):

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と評価されるものであったことです。変数が満たされている/空でない場合でも、偽と評価される可能性のあるものがいくつかあることに注意してください。つまり、 0nullなど。

変数が設定されているかどうかを確認するには、isset() を使用します。if($var). だけではありません。

しかし、上記のコメントで述べたように、これは単なる推測です。確認するには、正確なコードを私たち/私に提供する必要があります。

于 2013-03-07T14:12:17.073 に答える