Я поддерживаю библиотеку PHP, которая ответственна за то, что выбрала и хранила входящие данные (POST, ДОБЕРИТЕСЬ, параметры командной строки, и т.д.). Я только что исправил ошибку, которая не позволила бы этому выбирать переменные типа массив от POST и ДОБИРАТЬСЯ, и я задаюсь вопросом, применимо ли это также к части, которая имеет дело с командной строкой.
Можно ли передать массив как параметр командной строки к PHP?
Напрямую нет, все аргументы, переданные в командной строке, являются строками, но вы можете использовать строку запроса в качестве одного аргумента для передачи всех переменных с их именами:
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"
}
*/
Собственно говоря, нет. Однако вы можете передать сериализованный (либо используя PHP serialize ()
и unserialize ()
, либо используя json) массив в качестве аргумента, если скрипт десериализует его.
что-то вроде
php MyScript.php "{'colors':{'red','blue','yellow'},'fruits':{'apple','pear','banana'}}"
Я не думаю, что это идеальный вариант, но я бы посоветовал вам подумать о другом способе решения любой проблемы, которую вы пытаетесь решить.
Вам нужно придумать способ кодирования вашего массива как строки. Затем вы можете передать эту строку PHP CLI в качестве аргумента командной строки и позже декодировать эту строку.