2017-05-18 9 views
0

これは本当に変です。私は未定義インデックスの意味を知っています。しかし、このコードを見てください。Notice:未定義インデックス:loss_items

これは私がスクリプトの先頭に得たものである:

$__load = array(
    'loss_experience' => NULL, 
    'loss_items' => NULL, 
    'guild_info' => NULL, 
    'skull_type' => NULL, 
    'skull_time' => NULL, 
    'blessings' => NULL, 
    'direction' => NULL, 
    'stamina' => NULL, 
    'world_id' => NULL, 
    'online' => NULL, 
    'deletion' => NULL, 
    'promotion' => NULL, 
    'marriage' => NULL 
); 

は、そのクラスで私はこれだ:

public function load($id) 
    { 
     global $__load; 

     if($__load['loss_experience'] == NULL) 
     { 
      $loss = ''; 
      if(fieldExist('loss_experience', 'players')) { 
       $loss = ', `loss_experience`, `loss_mana`, `loss_skills`'; 
      } 

      $__load['loss_experience'] = $loss; 
     } 

     if($__load['loss_items'] == NULL) 
     { 
      $loss_items = ''; 
      if(fieldExist('loss_items', 'players')) { 
       $loss_items = ', `loss_items`, `loss_containers`'; 
      } 

      $__load['loss_items'] = $loss_items; 
     } 

を、これは私がなるエラーです:

Notice: Undefined index: loss_items in D:\xampp\htdocs\myaac\system\libs\pot\OTS_Player.php on line 145 

行145は次のとおりです。

if($__load['loss_items'] == NULL) 

私は間違っていましたか?

$__load['loss_experience'] = $loss; 

はその後通知があったされていません。私は、この行をコメント

。しかし、私はそれを宣言する必要があります。

@Edit 私はこれを試みた:最初のvar_dumpの

public function load($id) 
    { 
     global $__load; 
var_dump($__load); 
     if($__load['loss_experience'] == NULL) 
     { 
      $loss = ''; 
      if(fieldExist('loss_experience', 'players')) { 
       $loss = ', `loss_experience`, `loss_mana`, `loss_skills`'; 
      } 

      $__load['loss_experience'] = $loss; 
     } 
var_dump($__load); 
     if($__load['loss_items'] == NULL) 
     { 

出力は:NULL

そして第二のvar_dump:配列(1){[ "loss_experience"] =>列(0 ) ""}

これは、$ end変数の宣言が表示されないようですが、なぜですか?

+0

テスト済みです。私の側でうまく動作します。 'var_dump($ __ load);を実行してみてください。 – Ibu

+0

あなたはあなたの関数をpublic宣言しています - これはクラスメソッドですか?もしそうなら、なぜ '$ __load'を私用変数にして、代わりに' $ this-> __load'を使うのですか? –

+0

投稿を編集しました。私はあなたが言ったことを試して、それは私のトップ宣言変数を参照していないようです。 – slawkens

答えて

1

'未定義インデックス'は、関連付けられた配列 '__load'のその要素に値を保存していないことを意味します。 nullに設定するときは、実際に定義していませんでした。

== nullをテストする代わりに、!isset()を使用してください。

これは単なる警告なので、あなたのコードを壊すことはありません。

+0

ありがとうございます!あなたは正しかった。出来た。 – slawkens

関連する問題