在php中无序打印出echo


Unorder print out of echo in php

我不明白为什么会发生这种情况?在我的php代码中,我正试图使用函数newjobMySQL检索数据库的作业状态。它打印旧*作业状态:而不是工作状态:。客户端和服务器端编程是同时运行的,还是它们有编译的顺序?

echo '<b>'.'Job Status: '.'</b>' .newjob($row['new_job'])."<br />";
function newjob($num) {
if($num == 1) {
echo "New";
}else{
    echo "Old";
    }
}

永远不要让函数输出值

但只有返回它。

echo '<b>'.'Job Status: '.'</b>' .newjob($row['new_job'])."<br />";
function newjob($num) {
    if($num == 1) {
        return "New";
    }else{
        return "Old";
    }
}

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

function newJob( $num ) {
    return $num == 1 ? "New" : "Old";
}
echo '<b>'.'Job Status: '.'</b>' .newjob($row['new_job'])."<br />";
function newjob($num) {
if($num == 1) {
return "New";
}else{
    return "Old";
    }
}

这应该做到:

echo '<b>Job Status:</b> ', newjob($row['new_job']), '<br>';
function newjob($num) {
    return ($num ? 'New' : 'Old');
}

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

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