2017-01-03 6 views
0

単純な配列と単純なチェックは、配列またはオブジェクトです。配列データがない場合は、Noを表示せずにページがクラッシュします。出力配列が空であるかどうかを確認することができないようです。

代わりに:私はURLからfailつまり何のデータを受信して​​いないと$arr['outputs']は私が

未定義のインデックスに空白のページを持っている空である場合、これは、配列

$url=get_curl_content_tx("https://example.com"); 

$arr = json_decode($url, true);  
if (is_array($arr['outputs']) || is_object($arr['outputs'])) { 
     echo 'Yes'; 
} 
else { 
     echo 'No'; 
} 

ですNoif (is_array($arr['outputs']) || is_object($arr['outputs']))が配列かどうかをチェックしていませんか?

$arr['outputs']にデータがある場合はすべて問題ありません。

+0

'empty()' PHP関数 –

+0

を使ってみてください。しかし、 'empty()'と同じこと.. 'isset()'はうまくいくようです。 –

+0

$ arr変数は、それが保持していると思われる変数を保持していますか? var_dump($ arr) – GordonM

答えて

1

issetまたはarray_key_existsを使用して、$arr配列のキーが存在することを確認する必要があります。

if (isset($arr['outputs']) && is_array($arr['outputs'])) { 
+0

ええ、面白いです。このように、正常に動作しています。なぜissetは動作するのですか?is_arrayは機能しません。このis_object()も必要ですか?通常、私はオブジェクトであることを期待していません。 –

+0

配列内の_object_を参照していますが、これは存在しません。どの機能を使用していても、エラーが発生します。 – Andy

+0

@ JasonPaddleは 'var_dump($ arr ['outputs'])'を実行します。 'is_array($ arr)'が動作するかもしれませんが、is_array($ arr ['outputs'])と同じではありません。 ' – Devon

1

存在しない配列にアクセスしたい場合は、直前にどの機能を使用していてもエラーになります。

if(isset($arr)) { 
    // Just gets executed if the array exists ans isn't nulll 
} else { 
    // Array is null or non-existend 
} 

をしてif-elseで、あなたのコードを追加します。これを解決するために、配列はisset()で存在する場合、最初のチェック。

関連する問題