2

我正在尝试通过 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 并访问其元素?

谢谢

4

1 回答 1

0

PHP 和 Java 中的类数组数据结构之间没有直接映射。如果可能,您可以将 PHP 数组转换为序列化的 Java 对象数组/ArrayList 等,但这样的库可能不存在或必须安装和包含。

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

$var2 = json_encode($var2);

不幸的是,Java 没有原生 JSON 支持。JSON 的两个流行的 Java 库是JacksonGson。它们都能够轻松地将 JSON 字符串解析为 Java 数据结构。

如果你想要的只是数组项的字符串表示,你可以这样做implode(',', $var2)

于 2013-08-28T00:40:25.017 回答