15

is_array()私がやる前にいつも何かを使う必要があるのだろうかと思ってforeachいました。

変数が配列でない場合、エラーがスローされます。だから私はいつも使用します:

if(is_array($users))   {
    foreach($users as $user){

    }
}

あなたは私に何を勧めますか?ありがとう。

4

6 に答える 6

22

コードを十分に理解ている場合は、配列かどうかを確認する必要はありません。

それ以外の場合、変数の型頻繁に変更される場合は、コードを少し調整して、それが行われないようにすることをお勧めします。

それ以外は、その if ステートメントを使用する方法です。

于 2012-06-22T13:05:27.327 に答える
5

何かが配列であるか、そうでなければ Iterable を実装していることが確実な場合は、明らかに追加のif条件は必要ありません。よくわからない場合は、明らかに型を確認すると、コードの信頼性が向上します。

私が見たいくつかのハックには、変数を配列にキャストすることが含まれます: (array)$users. ただし、これは推奨されません。型を明示的に確認することをお勧めします。

また、これが関数内のコードである場合は、引数の入力を使用できます。

function mycode(array $users)
{
    foreach ($users as $user) { }
}

関数が間違った型で呼び出されると、エラーが発生します。

于 2012-06-22T13:05:24.533 に答える
4

これが関数で発生すると仮定します。

function doSomethingWithUsers($users)
{
    if(!is_array($users))
    {
        throw new Exception('$users is expected to be an array');
    }

    foreach($users as $user){
        ...
    }
}

これにより、間違ったパラメーターで呼び出されたときにすぐにわかります。

于 2012-06-22T13:05:12.653 に答える
1

あなたは私に何を勧めますか?

はい、それは良い考えであり、そのような考慮事項はあなたを防御的なプログラマーにします:)

于 2012-06-22T13:04:25.910 に答える