2013-08-28 4 views
2

Я пытаюсь вызвать Java из PHP через eval и передать массив в качестве аргумента.Вызов Java из 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]); 
    } 
} 

Проблема заключается в том, что я не могу извлечь элементы массива от 2-го аргумента в Java: он принимает массив ввода в строку " Array ", а не как массив. Выход 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. Две популярные библиотеки Java для JSON: Jackson и Gson. Они могут легко анализировать строки JSON в структурах данных Java.

Если все, что вы хотите это строковое представление элементов массива, вы могли бы сделать implode(',', $var2)

+0

Спасибо, это имеет смысл. Будут ли у меня проблемы с прохождением огромных объектов JSON ок. 5000 элементов? – user2723490

+0

@ user2723490 Я не понимаю, почему, но в этом случае, возможно, вам захочется использовать файл или базу данных - особенно если это число может продолжать расти –

Смежные вопросы