如何从函数返回多个值

时间:2012-09-19 09:22:25

标签: php function return explode

我正在构建一个脚本以使用来自Payment Express的PxPost,我已经使用了他们的示例代码,可以在http://www.paymentexpress.com/Technical_Resources/Sample_code_-_PHP/PX_Post_-_cURL.aspx找到

它是如何工作的虽然它是内置在一个自动脚本中,它从我的数据库中查询订单,然后处理它们,然后返回一个值。

我唯一的问题是我希望函数返回多个值,所以这就是我所做的

运行功能的代码(第201行):

$once_complete = process_request($billingID,$order_total,$merchRef);

发送要处理的付款,然后获取返回并使用示例代码处理XML。在代码的最后,我删除了所有$html信息,并将其替换为以下内容(第111行):

return $CardHolderResponseDescription.":".$MerchantResponseText.":".$AuthCode.":".$MerchantError;

据我所知,应该将其归结为它的开始。然后我想分割这些值并使用以下内容将它们作为字符串返回(第202行):

list($RespDesc, $MerchResp, $AuthCode, $MerchError) = explode(":", $once_complete);

但由于某种原因,这是行不通的。

我已经尝试回复返回,然后它工作正常,但之后它似乎消失了。任何人都可以看到可能出现的问题吗?

您可以在http://pastebin.com/LJjFutne查看整个网页的代码。请注意,此代码正在进行中,所以除非我的代码

,否则请不要嗤之以鼻

3 个答案:

答案 0 :(得分:9)

返回一个数组。

function process_request(){
    ...
    return array( $CardHolderResponseDescription, $MerchantResponseText, $AuthCode, $MerchantError );
}

通过以下方式提取:

$_result = process_request();
$CardHolderResponseDescription = $_result[0];
$MerchantResponseText = $_result[1];
...

提示:使用较短的变量来更好地阅读:)

答案 1 :(得分:1)

在你的函数process_request中:

return array($CardHolderResponseDescription, $MerchantResponseText, $AuthCode, $MerchantError);

调用你的函数时:

list($RespDesc, $MerchResp, $AuthCode, $MerchError) = process_request($billingID,$order_total,$merchRef);

答案 2 :(得分:1)

您可以做的最简单的事情是将返回值放在一个稍后可以访问的数组中

return array("CardHolderResponseDescription"=>$CardHolderResponseDescription, "MerchantResponseText" => $MerchantResponseText, "AuthCode" => $AuthCode );

以后

list($ RespDesc,$ MerchResp,$ AuthCode,$ MerchError)= $ my_return_value