PHP调用Python,返回多个值

Bri*_*Cox 3 php python arrays soap

我正在使用php设置一个SOAP服务器.在处理SOAP请求时,我需要调用一些现有的python脚本.这些脚本通常返回3个值:成功,描述和数据.

如何将所有三个值传递回php?

我的要求是:

exec('python test.py', $output);
Run Code Online (Sandbox Code Playgroud)

test.py会:

from getData import getData

status, description, data = getData()

return status, description, data
Run Code Online (Sandbox Code Playgroud)

我现有的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
Run Code Online (Sandbox Code Playgroud)

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

有人有主意吗?

TIA,

布赖恩

Mic*_*ski 5

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

主脚本必须将值打印到stdout:

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

# Print the values
print("STATUS:", status)
print("DESCRIPTION:", description)
print("DATA:", data)
Run Code Online (Sandbox Code Playgroud)

在PHP中,检查您获得的输出:

exec("python test.py", $output);
var_dump($output);
Run Code Online (Sandbox Code Playgroud)

您需要将printPython中的语句格式化为可以在PHP中轻松解析值的内容,例如每行一项,或者键:值对explode().