我正在尝试通过 eval 从 PHP 调用 Java 并将数组作为参数传递。
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 中的第二个参数中提取数组的元素:它将输入数组作为字符串“Array”而不是数组。 PHP 输出是
Array ( [0] => Hello World! [1] => test [2] => Array ) Array
如何将数组传递给 Java 并访问其元素?
谢谢
最佳答案
PHP 和 Java 中的类数组数据结构之间没有直接映射。如果可能,您可以将 PHP 数组转换为序列化的 Java 对象数组/ArrayList 等,但这样的库可能不存在或必须安装和包含。
相反,使用 JSON 会容易得多。
$var2 = json_encode($var2);
不幸的是,Java 没有原生的 JSON 支持。两个流行的 JSON Java 库是 Jackson和 Gson .它们都能够轻松地将 JSON 字符串解析为 Java 数据结构。
如果您想要的只是数组项的字符串表示,您可以执行 implode(',', $var2)
关于java - 使用参数作为数组从 PHP 调用 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18477546/