$argc

$argc传递给脚本的参数数目

说明

包含当运行于命令行下时传递给当前脚本的参数的数目。

Note: 脚本的文件名总是作为参数传递给当前脚本,因此 $argc 的最小值为 1

Note: 这个变量仅在 register_argc_argv 打开时可用。

范例

Example #1 $argc 范例

<?php
var_dump
($argc);
?>

当使用这个命令执行: php script.php arg1 arg2 arg3

以上例程的输出类似于:

int(4)

注释

Note:

也可以在 $_SERVER['argc'] 中获取。

参见

User Contributed Notes

anonymous 11-Oct-2018 04:43
int main(int argc, char *argv[])
{
  fprintf(stdout,"argumen count : %d\n",argc);
  fprintf(stdout,"argumen vector : %s\n",argv);
  return 0;
}
elm at r3m0ve dot gmx dot ch 03-Apr-2014 04:57
To decide whether my script is run from CLI I simply create a PHP script that handles only CLI invocations.

File cron.php:
<?php

// Set environment variables your application depends on
$_SERVER[ 'HTTP_HOST' ] = 'domain.tld';
// $_SERVER[ 'REQUEST_URI' ] = '/some/URI/if/needed';

// Use the environment to read out required values
$task = $_SERVER[ 'argv' ][ 1 ];

// Instanciate the dispatcher or whatever you use
$dispatcher = new Dispatcher();
$dispatcher->handle( $task );

?>

This way my application doesn't have to know about CLI at all.
Tejesember 04-May-2011 09:50
To find out are you in CLI or not, this is much better in my opinion:
<?php
if (PHP_SAPI != "cli") {
    exit;
}
?>
karsten at typo3 dot org 18-Feb-2009 12:47
Note: when using CLI $argc (as well as $argv) are always available, regardless of register_argc_argv, as explained at http://docs.php.net/manual/en/features.commandline.php