18433


エラー表示  
`Notice (8): Undefined offset: 0 [APP/View/posts/index.ctp, line 92]`  
のときに0を表示させたいのですが、  
以下のコードのときにoffset 0の表示がでます。

[code]

    <?php
      $rate = ($one[0]['Post']['id_count'] / $two[0]['Post']['id_count'])*100;
         if ($rate == null) {
             echo "0";
         } else {
             print round($rate,1);
         } 
    ?>
    
[/code]

上記の記述で、offset 0 のときに0を表示させて、数字があるときにはその値を表示させたいです。  
よろしくお願いいたします。


CC BY-SA 3.0
2015-11-05T08:49:32.900
18430
2015-11-05T09:37:14.787
10980
question
php
php offset 0 のときのview表示を0にしたい。


ここでいう offset は、 `$one[0]` や `$two[0]` の `[]`
の中に指定した数字のことで、日本語では添字などと言います。配列に添字0の要素がなかったというエラーですから、おそらくどちらかの配列が空だったのでしょう。

`$rate = ...` の行でエラーが起きているので、 **それよりも前に** `$one` と `$two`
の状態を確認して、もしどちらかが空だったら `$one[0]` や `$two[0]` を実行しないようにする必要があります。

[code]

    <?php
         if (empty($one) || empty($two)) {
             echo "0";
         } else {
             $rate = ($one[0]['Post']['id_count'] / $two[0]['Post']['id_count'])*100;
             print round($rate,1);
         } 
    ?>
    
[/code]

上記コードでは [`empty()`](http://php.net/manual/ja/function.empty.php) を使いましたが、`$one
=== []` 、`!isset($one[0])` 、 `count($one) === 0` といった方法でも同じような判定が行えます。


CC BY-SA 3.0
2015-11-05T09:37:14.787
18433
2015-11-05T09:37:14.787
8000
18430
answer