8

私はphpに非常に慣れていないので、Pythonからphpに、またはその逆に引数を渡す方法を理解するためにかなりの型を費やしてきました。単一の変数を渡す方法はわかりましたが、まだ立ち往生していて、これに対する答えが見つからないようです:

Php は、文字列のリストを返す Python スクリプト (その部分は機能します) を呼び出します。このリストをphpで処理したいと思います。

私がしようとすると:

print mylist

myscript.py で、次に:

$result = exec('python myscript.py')

PHPは $result を単一の文字列として理解しているようです(これは理にかなっていると思います)。

おそらくjsonが役立つか、Pythonでリストの代わりに辞書を使用する必要があることを理解しています。しかし、私はどのように正確に把握することはできません。

誰かが助けることができれば、それは大歓迎です!ありがとう!

4

4 に答える 4

13

例えば:

myscript.py

import json

D = {'foo':1, 'baz': 2}

print json.dumps(D)

myscript.php

<?php 

$result = json_decode(exec('python myscript.py'), true);
echo $result['foo'];
于 2013-06-21T12:49:05.500 に答える
1

どうやらあなたの質問は誤解を招くものでした。これがpythonリストをphp配列に変換するための解決策であると考えて、ここにリダイレクトされました。

リストをphp配列に変換したい人のための素朴な解決策を投稿してください。

// Sample python list 
$data = '[["1","2","3","4"],["11","12","13","14"],["21","22","23","24"]]';

// Removing the outer list brackets
$data =  substr($data,1,-1);

$myArr = array();
// Will get a 3 dimensional array, one dimension for each list
$myArr =explode('],', $data);

// Removing last list bracket for the last dimension
if(count($myArr)>1)
$myArr[count($myArr)-1] = substr($myArr[count($myArr)-1],0,-1);

// Removing first last bracket for each dimenion and breaking it down further
foreach ($myArr as $key => $value) {
 $value = substr($value,1);
 $myArr[$key] = array();
 $myArr[$key] = explode(',',$value);
}

//Output
Array
(
[0] => Array
    (
        [0] => "1"
        [1] => "2"
        [2] => "3"
        [3] => "4"
    )

[1] => Array
    (
        [0] => "11"
        [1] => "12"
        [2] => "13"
        [3] => "14"
    )

[2] => Array
    (
        [0] => "21"
        [1] => "22"
        [2] => "23"
        [3] => "24"
    )

)
于 2015-07-22T13:14:22.940 に答える