2016-10-12 15 views
-2

isset()関数を使用するときにPHPが未定義のオフセットエラーをスローするのが正しいかどうかを理解しようとしています。 データは雄弁なコレクションからのものです。PHP未定義オフセット:0 with isset

$interest->vehicles 

コレクションが空の場合に問題が発生します。 3つの異なる設定(Mac + Mamp PRO、Windows + Xampp、Mac + Mamp)でテストされたコードは、最初の2つの設定では未定義のオフセットがスローされますが、3番目の設定ではありません(Mac + Mamp) PHP 7で完了し、エラーを表示します。

私はISSETにしようとオフセットが存在していませんが、私は私にエラーが表示されない理由を私は理解していないものがあるようにエラーが他のセットアップに起きても、なぜ私が理解
isset($interest->vehicles[0]['make']) 

issetを使用するときのセットアップ。

私はマシーンを私のマシンに再インストールしようとしましたが、Sierra OSにアップグレードしてラップトップを再起動し、php.iniの設定を常にすべてのエラーを表示するように変更しました。

ErrorException in Collection.php line 1043: 
Undefined offset: 0 (View: /Users/efood-leo/Sites/cardealer/resources/views/panel/interest/form.blade.php) (View: /Users/efood-leo/Sites/cardealer/resources/views/panel/interest/form.blade.php) 

これは私が話していますエラーであり、私は車が[0]が存在しない場合は

$interest->vehicles[0]['make'] 

を取得しようとする場合にのみ発生します。

私がしなければ:

isset($interest->vehicles[0]['make']) 

はその後、私の設定に誤りがない、と2つのその他の開発者は、エラーがまだISSETで発生し報告しています。

+0

場合(ISSET($利息)){場合(カウント($:

ISSET()関数は、それが

$interest = (object)['vehicles' => []]; echo $interest->vehicles[0]['make']; 

はISSET()にもっと読む働くISSETずに何とかので、trueを返しています正確なエラーメッセージと '$ interest'の実装を提供してください。($ interest-> vehicles)> 0){var_dump($ interest-> vehicles;)}} – DevNiels

+1

[再現できません。](https://3v4l.org/MBaZW) 。 – deceze

+0

issetを使わずに 'if($ interest-> vehicles)'で結果を評価しようとしました –

答えて

-1

このコードを試してください。 http://php.net/manual/en/function.isset.php

+0

私はそれを試したと正しいようです!まだ私の同僚がissetで定義されていないオフセットエラーを見る理由を理解できません。 https://3v4l.org/aOZOd –

+0

お使いのマシンが同じバージョンのPHPを実行していることを願っています。何とかisset()は、渡された引数が存在するかどうかをチェックするためにエラーが値であると考えているので、何も返しません。 isset()の使い方に注意してください。 If文は基本的な評価に役立ちます。 –

+0

isset($ a ['cake'] ['a'] ['b'])); isset($ a ['cake']); issetは、存在しないより深い配列値に対して、issetがfalseを返すと明言されています。 // FALSE –

関連する問題