-1

なぜ私はこれを行うことができないのですか?それとも、構文が間違っているだけですか?

$status = function() {
    switch($job['status'])
    {   case "CREATED": return "Created by <b>$creator</b> on " . date("jS \o\\f M Y",$job['ts']); break;
        case "APPROVAL": return "Pending Approval."; break;
        case "DEFERRED": return "Marked as <b>Deferred</b> by <b>$creator</b>."; break;
        case "COMPLETE": return "Marked as <b>Complete</b>."; break;
    }
}

echo $status;
4

3 に答える 3

3

無名関数には PHP >= 5.3.0 が必要です

$status = function($job, $creator) {
    switch($job['status'])
    {   case "CREATED": return "Created by <b>$creator</b> on " . date("jS \o\\f M Y",$job['ts']); break;
        case "APPROVAL": return "Pending Approval."; break;
        case "DEFERRED": return "Marked as <b>Deferred</b> by <b>$creator</b>."; break;
        case "COMPLETE": return "Marked as <b>Complete</b>."; break;
    }
};

echo $status($job, $creator);
于 2013-07-23T10:01:26.683 に答える
1

あなたがやろうとしているのは、クロージャー (無名関数) です。ただし、これは PHP >= 5.3 でのみ機能します。

正しい構文は次のとおりです。

$status = function($job) {
    // your switch
};

echo $status($job);

// or import $job to scope

$job = array('status' => 'CREATED');
$status = function() use($job) {
    // your switch
};

echo $status();

通常の関数を作成しないのはなぜですか?

function getStatus($job) {
    // your switch
}

echo getStatus($job);
于 2013-07-23T10:07:44.813 に答える
0

こんにちは、 php man - 変数関数無名関数、およびクロージャ
を確認する必要があります。

于 2013-07-23T10:02:42.567 に答える