0

渡されたパラメーターが配列であり、値を持っているかどうかをチェックする必要がある単純な関数があります。多次元配列をプロパティとして渡す場合を除いて、関数は完全に機能します。isset()は成功したと思いますが、キーが存在しない可能性があるため、未定義になります。

 <?php
 $array1 = array("John","Doe");
 $array2 = array();

 function valid_array($array) {
     if (is_array($array) && count($array) > 0) {
         return true;
     }
     return false;
 }

 // Below works great:
 valid_array($array1);

 // If I pass the following I get the notice 
 // Notice: Undefined index: sample_key in ....:
 valid_array($array2['sample_key']);     


 ?>

何か案は?

4

2 に答える 2

0

つまりsample_key、キーとしての配列項目はありません。それを確認するために使用isset()します。抑制しないでください。

if(isset($array2['sample_key'])) 
    valid_array($array2['sample_key']); 

そのような場合は、Exceptionsそれらをキャッチし、代わりにエラーをスローすると呼ばれます。

使用時にエラーを発生させる方法は次のとおりです。

function valid_array(array $array) {
                 //    ^ Asks for a generic array to be passed
     if (is_array($array) && count($array) > 0) {
         return true;
     }
     return false;
 }
于 2013-03-10T18:05:56.667 に答える
0

エラーを抑制する最も簡単な方法は、関数が呼び出される前に「@」記号を使用することです。

例:@my_custom_function(); これにより、関数が発生する可能性のあるエラーが抑制されます(ただし、エラーは修正されません)

于 2013-03-10T18:09:26.473 に答える