php - 从函数返回变量

时间:2013-09-07 09:58:35

标签: php function

我正在尝试从函数返回变量。我有下面的函数,它将一个postid插入数据库。我需要将postid的值返回到另一个页面。

forum.php - 功能在哪里。

function newTopic(){
    // Get the POST data
    global $ir;

    $postid = mysql_insert_id();

    mysql_query("UPDATE forum_topics SET post_id='$postid' WHERE topic_id='$topicid'");

    // No error found and the update was succesful - Return success!            
    return 100;
    return $postid;
}

newtopic.php - 我需要$postid变量的地方。

if($_POST)
{     
    $newTopic = $forum->newTopic();    

        /*
         * Return codes:
         * 100: Success
         */       
    switch($newTopic)
    {
        //If no error = success.    
        case 100:
            $success = 'You have successfully created the topic.';
            $issuccess = 1;
            $stop = true;
        break;
    }

    $checkerror = $error; 
    $checksuccess = $success;

} 

if($checksuccess){ 
    $contents.="
    ".alert("success","$success")."";
    refresh("3","/forum/t$id-$postid");
}

正如您所看到的,我正在尝试使用函数newTopic()中的$ postid变量。虽然,$ postid变量是空的。

如何从forum.php中的函数newTopic.php获取值到newtopic.php?

4 个答案:

答案 0 :(得分:4)

使用时

return 100;

您的代码永远不会看到

return $postid;

您可以使用此代码返回

return array("code"=>"100","postid"=>$postid);

现在在new_topic.php中使用如图所示的代码

if($_POST)
{

    $newTopic = $forum->newTopic();


        /*
         * Return codes:
         * 100: Success
         */

    switch($newTopic['code'])
    {

            //If no error = success.    
            case 100:
                $success = 'You have successfully created the topic.';
                $issuccess = 1;
                $stop = true;
            break;
    }

    $checkerror = $error; 
    $checksuccess = $success;

} 

        if($checksuccess){ 
        $contents.="
        ".alert("success","$success")."";
        refresh("3","/forum/t$id-$newTopic['postid']");
        }

答案 1 :(得分:1)

在返回$ postid变量之前,您的代码看起来返回值100。 那是错的。你的代码会在第一次返回时退出函数。

注释“//返回100;”

OR返回一个数组。你不能像你那样返回两个值。 而不是做

 return 100;
 return $postid;

待办事项

 //return 100;
 return array("successs"=>100,"id"=>$postid);

然后使用您的$ newTopic变量作为以下内容: 在开关中:

switch($newTopic['success'])

在其他地方使用postId

$newTopic['id']

答案 2 :(得分:1)

尝试参考,如下面的代码

function newTopic(&$postid){
    // Get the POST data
    global $ir;

    $postid = mysql_insert_id();

    mysql_query("UPDATE forum_topics SET post_id='$postid' WHERE topic_id='$topicid'");

    // No error found and the update was succesful - Return success!            
    return 100;
}

....... //some codes
$postid = null;
newTopic($postid);
$my_postId = $postid; //Now you have your post ID 

或者你存在像

这样的代码
if($_POST)
{ 
    $last_postid = null;    
    $newTopic = $forum->newTopic($last_postid );    

        /*
         * Return codes:
         * 100: Success
         */       
    switch($newTopic)
    {
        //If no error = success.    
        case 100:
            $success = 'You have successfully created the topic.';
            $issuccess = 1;
            $stop = true;
            $postid = $last_postid;
        break;
    }

    $checkerror = $error; 
    $checksuccess = $success;

} 

if($checksuccess){ 
    $contents.="
    ".alert("success","$success")."";
    refresh("3","/forum/t$id-$postid");
}

编辑:呼叫时间传递参考已修复。

答案 3 :(得分:0)

如果你想要返回两个值,你不能只写两个回报。

有几个选项可以返回更多值。一个是使用数组:

return array(100, $postId);

list($status, $postId) = $forum->newTopic();

您也可以使用关联数组作为s.d建议。

但是,由于您的一个变量只包含状态,因此在操作失败的情况下也可以使用异常。