为什么我不能这样做?或者我只是弄错了语法?
$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;
答案 0 :(得分:3)
Anonymous functions需要PHP&gt; = 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);
答案 1 :(得分:1)
你要做的是一个闭包(匿名函数)。但这仅适用于PHP&gt; = 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);
答案 2 :(得分:0)
嗨Maybe或许您应该查看php man - variable function,anonymous functions和closure