java - 使用参数作为数组从 PHP 调用 Java

标签 java php arrays eval

我正在尝试通过 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 库是 JacksonGson .它们都能够轻松地将 JSON 字符串解析为 Java 数据结构。

如果您想要的只是数组项的字符串表示,您可以执行 implode(',', $var2)

关于java - 使用参数作为数组从 PHP 调用 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18477546/

相关文章:

java - MongoDB 和 Apache Mahout 连接错误

php - 如何使用 PHP 和 MySQL 从出生日期获取年龄?

Javascript 没有传递整个变量字符串

java - 生成随机数字对列表时如何避免重复?

python - 如何制作一个接受 numpy 数组、可迭代对象或标量的 numpy 函数?

java处理返回异常

java - 套接字与 SocketChannel

java - 将 Spark Launcher 输出保存到文件

java - 是否需要 httpPost.setHeader ("Accept"、 "application/json")和 httpPost.setHeader ("Content-type"、 "application/json")?

C - 从 3D 数组中选择 2D 切片