Действительно ли возможно передать массив как параметр командной строки к Сценарию PHP?

Я поддерживаю библиотеку PHP, которая ответственна за то, что выбрала и хранила входящие данные (POST, ДОБЕРИТЕСЬ, параметры командной строки, и т.д.). Я только что исправил ошибку, которая не позволила бы этому выбирать переменные типа массив от POST и ДОБИРАТЬСЯ, и я задаюсь вопросом, применимо ли это также к части, которая имеет дело с командной строкой.

Можно ли передать массив как параметр командной строки к PHP?

23
задан Manos Dilaverakis 20 May 2010 в 10:10
поделиться

3 ответа

Напрямую нет, все аргументы, переданные в командной строке, являются строками, но вы можете использовать строку запроса в качестве одного аргумента для передачи всех переменных с их именами:

php myscript.php a[]=1&a[]=2.2&a[b]=c

<?php
parse_str($argv[1]);
var_dump($a);
?>

/*
array(3) {
  [0]=> string(1) "1"
  [1]=> string(3) "2.2"
  ["b"]=>string(1) "c"
}
*/
14
ответ дан 29 November 2019 в 01:58
поделиться

Собственно говоря, нет. Однако вы можете передать сериализованный (либо используя PHP serialize () и unserialize () , либо используя json) массив в качестве аргумента, если скрипт десериализует его.

что-то вроде

php MyScript.php "{'colors':{'red','blue','yellow'},'fruits':{'apple','pear','banana'}}"

Я не думаю, что это идеальный вариант, но я бы посоветовал вам подумать о другом способе решения любой проблемы, которую вы пытаетесь решить.

10
ответ дан 29 November 2019 в 01:58
поделиться

Вам нужно придумать способ кодирования вашего массива как строки. Затем вы можете передать эту строку PHP CLI в качестве аргумента командной строки и позже декодировать эту строку.

1
ответ дан 29 November 2019 в 01:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: