在一个函数中创建一个变量,并在PHP中将其传递给另一个函数

在一个函数中创建一个变量,并在PHP中将其传递给另一个函数,php,function,variables,Php,Function,Variables,首先让我说,我花了一天的时间阅读了三页谷歌关于这个主题的文章,并研究了这个页面 好吧,这是我的困境。我有两个功能。两者都是通过AJAX调用的。第一个为变量赋值,第二个使用该变量。这两个功能都由两个单独的按钮触发,需要保持这种状态。AJAX和函数的启动工作正常,但变量没有传递。这是我的密码: if( $_REQUEST["subjectLine"] ) //initiate first function { $CID = wpCreateChimpCampaign(); echo

首先让我说,我花了一天的时间阅读了三页谷歌关于这个主题的文章,并研究了这个页面

好吧,这是我的困境。我有两个功能。两者都是通过AJAX调用的。第一个为变量赋值,第二个使用该变量。这两个功能都由两个单独的按钮触发,需要保持这种状态。AJAX和函数的启动工作正常,但变量没有传递。这是我的密码:

if( $_REQUEST["subjectLine"] ) //initiate first function
{
    $CID = wpCreateChimpCampaign();
    echo $CID; //this works
}

if( $_REQUEST["testEmails"] ) //initiate second function
{
    echo $CID; //does not return anything but should contain "apple"
    wpSendChimpTest($CID);
} 


function wpCreateChimpCampaign () //first function
{
    $CID = "apple";
    return $CID;    
}

function wpSendChimpTest ($CID) //second function
{
    echo $CID; //does not return anything but should contain "apple"
}

我很乐意使用一个类,但在那里我也没有太多的运气。我希望在不使用类的情况下解决这个问题。提前谢谢你的帮助

我不确定阻塞在哪里。您拥有的代码将起作用:

$CID = wpCreateChimpCampaign(); // returns 'apple'
wpSendChimpTest($CID);          // echos 'apple'

我不确定抢劫发生在哪里。您拥有的代码将起作用:

$CID = wpCreateChimpCampaign(); // returns 'apple'
wpSendChimpTest($CID);          // echos 'apple'

代码看起来不错,但是您确定所有的需求都得到了满足,所以这两个函数都可以执行吗


换句话说,您是否同时为
$\u请求[“subjectLine”]
$\u请求[“testEmails”]
提供了值?

代码看起来不错,但您是否确定满足了所有要求,以便执行这两个功能


换句话说,您是否同时为
$\u请求[“subjectLine”]
$\u请求[“testEmails”]

提供值如果您对该文件进行两次单独调用,将其视为两个完全独立的文件中的两个函数可能会有所帮助。尽管它们存在于同一个PHP文件中,因为它们在不同的调用中使用了call,但它们不保留变量$CID的值。文件运行后,该变量将被销毁,当您再次调用该文件时,该值再次为null

因此,您需要在调用之间存储该变量。您可以将其存储在数据库中,也可以将其存储在会话变量中


所以调用session_start();在文件的开头,不使用$CID,只使用$_SESSION['CID']

如果要对此文件进行两个单独的调用,将其视为两个完全独立的文件中的两个函数可能会有所帮助。尽管它们存在于同一个PHP文件中,因为它们在不同的调用中使用了call,但它们不保留变量$CID的值。文件运行后,该变量将被销毁,当您再次调用该文件时,该值再次为null

因此,您需要在调用之间存储该变量。您可以将其存储在数据库中,也可以将其存储在会话变量中


所以调用session_start();在文件的开头,不使用$CID,只使用$_SESSION['CID']

是的,我确信这两种方法都有效。我举了一个例子,好吧,我想@user2044709已经解决了这个问题——每次调用一个函数时,它都是一个新的ajax请求,并且上下文被重置。如果嵌套函数调用,函数将保留相同的上下文,应该可以工作,但这确实意味着您每次都必须有效地调用这两个函数。是的,我确信它们都可以工作。我举了一个例子,好吧,我想@user2044709已经解决了这个问题——每次调用一个函数时,它都是一个新的ajax请求,并且上下文被重置。如果嵌套函数调用,函数将保留相同的上下文,应该可以工作,但这确实意味着您每次都必须有效地调用这两个函数。