Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Por que $argc não é o numero de parametros?

A pergunta é sobre o valor contido em $argc e $argv. A alternativa "$argc possui o apenas número de parâmetros passados para o arquivo PHP, e $argv é um array com o valor desses parâmetros" está errada e não entendi o porquê;

A alternativa considerada certa é: "$argc possui o número de parâmetros passados mais 1, e $argv é um array com o valor desses parâmetros", e a justificativa não me convence: " O nome do arquivo executado conta como um parâmetro"

Pelo que entendi, o nome do programa é passado para a posição 0 (zero) de $argv, logo $argc contêm a quantidade de parametros passados. Por exemplo, ao rodar o comando:

php comando.php argumento1 argumento2

argc = 2 argv = ['comando.php', 'argumento1', 'argumento2']

Ao passar 2 argumentos, $argc tem o valor 2, não 3 (que seria numero de parametros mais um).

2 respostas
solução!

Olá, Uesley. Em $argc também é contado o nome do arquivo em si. Exemplo:

$ cat teste.php 

<?php var_dump($argc, $argv);
$ php teste.php 1 2 3
/tmp/teste.php:1:
int(4)
/tmp/teste.php:1:
array(4) {
  [0] =>
  string(9) "teste.php"
  [1] =>
  string(1) "1"
  [2] =>
  string(1) "2"
  [3] =>
  string(1) "3"
}

Entendi. Me confundi achando que $argc era igual a count($argv)

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software