PHP调用Python,返回多个值

PHP调用Python,返回多个值,php,python,arrays,soap,Php,Python,Arrays,Soap,我正在使用php设置一个SOAP服务器。在处理SOAP请求时,我需要调用一些现有的python脚本。这些脚本通常返回3个值:success、description和data 如何将这三个值传递回php 我的要求是: exec('python test.py', $output); test.py执行以下操作: from getData import getData status, description, data = getData() return status, descriptio

我正在使用php设置一个SOAP服务器。在处理SOAP请求时,我需要调用一些现有的python脚本。这些脚本通常返回3个值:success、description和data

如何将这三个值传递回php

我的要求是:

exec('python test.py', $output);
test.py执行以下操作:

from getData import getData

status, description, data = getData()

return status, description, data
我现有的python看起来像这样:

def getData():
    database = Database()

    # get all the Data from the db
    data = database.getData()

    if data is None:
        return False, "...notes...", ""

    return True, "...notes...", data
我不确定test.py中的返回是否正确。但即使是这样,当我查看var_dump($output)时,我看到的只是“数组”

有人有什么想法吗

蒂亚

Brian

由于
exec()
调用将shell输出接收到变量
$output
,因此无法从Python函数接收返回的字符串。您必须打印它们,而不是返回它们,并且每个打印的行都将进入
exec()
数组
$output

主脚本必须将值打印到标准输出:

from getData import getData
status, description, data = getData()

# Print the values
print("STATUS:", status)
print("DESCRIPTION:", description)
print("DATA:", data)
在PHP中,检查返回的输出:

exec("python test.py", $output);
var_dump($output);

您需要将Python中的
print
语句格式化为可以在PHP中轻松解析值的内容,例如每行一个内容,或者可以
explode()

在命令行上执行
Python test.py
时会发生什么?很好。起初我确实打印过,但后来改为返回。如果我做一个返回,我会得到“SyntaxError:‘return’outside function”Ok,T/F会转到exec的return\u var吗?如果我在示例中列出的“notes”是一个多行、可变长度的字符串,我是否仍然能够通过$output[0]和$output[1]中的数据访问它?@BrianCox抱歉,我弄错了。对
getData()
的调用可以按原来的方式工作,但需要打印python脚本中的值。如果您希望使用多行字符串,则需要设计一些方法来解析它们,例如
key:value
对。如果输出比较复杂,我会考虑将python输出编码为JSON,这将使在PHP中读取它更容易。当我这样做时(从命令行):python test_get_bcas.py我得到:('STATUS:',True,'\n')('DESCRIPTION:','Success','\n')('DATA:',['val1','val2'],'\n')正如我所期望的那样工作。但是在php中,var_dump($output)给了我:array(0){}Btw,谢谢你的帮助。Python和php对我来说都是相当新的。我想我知道的足够危险了!:)@ernie JSON可能也值得研究。谢谢你们两位的建议!