Передать в массив потенциально бесконечное количество аргументов, кроме одной числовой переменной в сценарии командной строки PHP - PullRequest
1 голос
/ 07 апреля 2010

Я пытаюсь создать скрипт PHP, который будет принимать потенциально бесконечное количество URL-адресов из командной строки в качестве аргументов. Мне также нужно передать аргумент, который имеет только одно возможное числовое значение (чтобы указать время ожидания), например ::

./urltest.php 60 url1.com url2.com url3.com

Я не совсем уверен, как указать argv [1] в качестве одной числовой переменной, в то время как остальные аргументы (то есть список URL-адресов) помещаются в массив. Может быть что-то вроде:

$timeout = $argv[1];
$args = func_get_args();    

function numfilter($num) {
    return !is_numeric($num);
}

$urls = array_filters($args, 'numfilter');

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 07 апреля 2010

Не думаю, что вы хотите func_get_args. Это для получения всех аргументов для текущей функции. Это не имеет ничего общего с командной строкой. Я бы сделал что-то вроде

//i don't like altering the global $argv
$urls    = $argv;

//take off the first element of the array, leaving only urls
$script = array_shift($argv); //shift off script name, per other post :)
$timeout = array_shift($urls); 
if(!is_numeric($timeout)) exit ("First argument was not a number") //array_shift always makes me break out perl style, so this however you want
//your $urls variable now contains an array with arguments 2 - n
1 голос
/ 07 апреля 2010

Обязательно сделайте два вызова array_shift, так как argv [0] будет именем скрипта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...