2

我不明白为什么会这样?在我的php代码中,我尝试使用函数newjob 来回显从MySQL检索数据库的作业状态。它打印 Old* Job Status:而不是Job Status: Old。客户端和服务器端编程是同时运行还是有编译顺序?

echo '<b>'.'Job Status: '.'</b>' .newjob($row['new_job'])."<br />";

function newjob($num) {
if($num == 1) {
echo "New";
}else{
    echo "Old";
    }
}
4

5 回答 5

8

永远不要让你的函数输出一个值。

但只能退货

echo '<b>'.'Job Status: '.'</b>' .newjob($row['new_job'])."<br />";

function newjob($num) {
    if($num == 1) {
        return "New";
    }else{
        return "Old";
    }
}
于 2013-08-08T14:18:16.173 回答
2

您的功能需要return而不是echo. 当您的函数被调用时,第一行期望它返回一个可以连接的值,但该函数不返回任何内容,它只是echo在调用时返回。

function newJob( $num ) {
    return $num == 1 ? "New" : "Old";
}
于 2013-08-08T14:17:18.243 回答
1
echo '<b>'.'Job Status: '.'</b>' .newjob($row['new_job'])."<br />";

function newjob($num) {
if($num == 1) {
return "New";
}else{
    return "Old";
    }
}
于 2013-08-08T14:18:28.163 回答
1

这应该这样做:

echo '<b>Job Status:</b> ', newjob($row['new_job']), '<br>';
function newjob($num) {
    return ($num ? 'New' : 'Old');
}
于 2013-08-08T14:20:14.057 回答
1

使用诸如Propel之类的 ORM 可以避免这种编程风格。您可以创建另一个访问器,而不是创建一个独立的函数,它可以根据“作业”对象的状态返回“旧”或“新”字符串。

这样,您可以使用字符串 getNewDescription() (您拥有的方法)或 boolean isNew() ,它将由相同的数据驱动。

于 2013-08-08T14:26:17.550 回答