1

取り除くことができないかなり厄介なエラーがあります。問題の原因となる関数は次のとおりです。

    function get_info_by_WatIAM($WatIAM, $info) { 
    $users_info = array();
    exec("uwdir -v userid={$WatIAM}", $users_info);
    foreach ($users_info as $user_info) {
        $exploded_info = explode(":", $user_info);
        if (isset($exploded_info[1])){              
            $infoArray[$exploded_info[0]] = $exploded_info[1];
        } 
    }
    return $infoArray[$info];   }

関数の呼び出しは次のとおりです。

} elseif (  empty(get_info_by_WatIAM($_POST['ownerId'])) ) { ... 

何か提案をいただければ幸いです。どうもありがとう!

コードが意味をなさない場合は、さらに説明があります。execは、学校のすべてのユーザーに関する情報を格納するプログラムを使用します。これには、教員、名前、ユーザーIDなど$_POST['ownerId']が含まれます。これはユーザー名です。ユーザー名を入力すると、ユーザーのすべての情報が自動的に入力されるという考え方です。

4

3 に答える 3

8

empty関数呼び出しを回避する必要はありません。実際にemptyは、変数でのみ機能し、関数では機能しません(ご覧のとおり)。スルーネスが設定されていない可能性emptyのある変数をテストする場合にのみ必要です。その関数呼び出しが存在しなければならないので、関数呼び出しの周りには無意味です。代わりに、単に以下を使用してください。

} else if (!get_info_by_WatIAM($_POST['ownerId'])) { ... 

同じことをします。詳細な説明については、PHPのissetAndemptyの決定的なガイドをお読みください。

于 2012-06-18T13:10:51.220 に答える
3

empty式(関数の呼び出し結果など)ではなく、変数でのみ使用できます。ドキュメントページに警告があります:

ノート:

empty()他のものは解析エラーになるため、変数のみをチェックします。つまり、以下は機能しませんempty(trim($name))

PHPの最も優れた残された癖の1つにすぎません。

回避策の1つは、結果を変数に格納してそれを呼び出すemptyことですが、それは不格好です。この特定のケースでは、次を使用することもできます

if (!get_info_by_WatIAM(...))

...一般的には、if (empty($a))if(!$a)同等ではありませんが。

于 2012-06-18T13:09:49.177 に答える
-1

これの値を取得します

$a = get_info_by_WatIAM($_POST['ownerId'])

その後、チャック

empty($a)

それが動作します

于 2012-06-18T13:10:22.700 に答える