2013-08-28 77 views
2

我想通過eval從PHP調用Java並傳遞一個數組作爲參數。使用參數作爲數組調用PHP的PHP

PHP代碼:

$var1 = 'test'; 
$var2 = array("one","two","three"); 
exec("java HelloWorldApp " . $var1 . " " . $var2 . " 2>&1", $output); 
print_r($output); 
print_r($output[2]); 

Java代碼:

class HelloWorldApp { 
    public static void main(String[] args) { 
     System.out.println("Hello World!"); // Display the string. 
     System.out.println(args[0]); 
     System.out.println(args[1]); 
    } 
} 

的問題是,我不能提取從第二參數數組元素中的Java:它需要輸入數組作爲字符串「陣列「而不是數組。 PHP的輸出是

Array ([0] => Hello World! [1] => test [2] => Array) Array 

如何傳遞數組Java和訪問它的元素?

謝謝

+2

要做到這一點,最好的方法是使用JSON。幾乎所有的語言都可以讀寫json。使用它,你可以將你的數組轉換爲json,傳遞它們,然後再將它們轉換爲數組。 – AliBZ

回答

0

PHP和Java中的數組類似的數據結構之間沒有直接映射。如果可能的話,可以將PHP數組轉換爲序列化的Java對象數組/ ArrayList等,但是這樣的庫可能不存在或將不得不被安裝和包含。

相反,使用JSON會容易得多。

$var2 = json_encode($var2); 

不幸的是,Java沒有原生的JSON支持。兩種流行的用於JSON的Java庫是JacksonGson。他們都能夠輕鬆地將JSON字符串解析爲Java數據結構。

如果你想要的是數組項的字符串表示,你可以做implode(',', $var2)

+0

謝謝,這很有道理。我會在傳遞大約JSON對象時遇到任何問題。 5,000個元素? – user2723490

+0

@ user2723490我不明白爲什麼,但在這種情況下,您可能需要使用文件或數據庫 - 尤其是如果該數字可以繼續增長 –