2013-08-28 43 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我不明白为什么,但在这种情况下,您可能需要使用文件或数据库 - 尤其是如果该数字可以继续增长 –