如何将Python中的多个列表传递到PHP并转为对应数组?
解决方案
方案1:不修改现有Python代码
你当前Python端分两行输出两个JSON字符串,PHP拿到的$return数组已经按行存储了两个JSON串,逐行解码即可:
exec("test.py", $return); // 逐行解码得到两个数组 $list1 = json_decode($return[0], true); $list2 = json_decode($return[1], true); // 验证输出 var_dump($list1, $list2);
方案2(更推荐):Python端统一打包输出
这种方案可靠性更高,避免输出内容带换行、行数变化等异常场景导致解析失败,只需要一次编解码:
Python端调整代码
import json list1 = [1,2,3] list2 = [4,5,6] # 把所有列表打包为一个整体序列化输出 print(json.dumps([list1, list2]))
PHP端解析代码
// 用shell_exec直接获取完整的输出字符串,trim去除末尾换行 $fullOutput = trim(shell_exec("test.py")); // 一次解码得到包含两个列表的二维数组 $allLists = json_decode($fullOutput, true); $list1 = $allLists[0]; $list2 = $allLists[1]; // 验证输出 var_dump($list1, $list2);
原写法问题说明
你第二种写法只能拿到第二个列表,是因为exec()函数的返回值固定为命令执行输出的最后一行内容,所以只会拿到第二行的JSON串,解码后对应第二个列表。
内容的提问来源于stack exchange,提问作者user1922979
相关产品推荐
相关产品推荐

