引數處理

引數以類似於大多數 C 風格語言的方式傳遞給程式。$argc 是一個整數,包含包含程式名稱的引數個數,$argv 是一個包含程式引數的陣列。$argv 的第一個元素是程式的名稱。

#!/usr/bin/php

printf("You called the program %s with %d arguments\n", $argv[0], $argc - 1);
unset($argv[0]);
foreach ($argv as $i => $arg) {
    printf("Argument %d is %s\n", $i, $arg);
}

使用 php example.php foo bar 呼叫上述應用程式(其中 example.php 包含上面的程式碼)將導致以下輸出:

你用 2 個引數呼叫了程式 example.php。
引數 1 是 foo
引數 2 是 bar

請注意,$argc$argv 是全域性變數,而不是超全域性變數。如果函式需要 global 關鍵字,則必須使用 global 關鍵字將它們匯入本地範圍。

此示例顯示了在使用諸如 ""\之類的轉義時如何對引數進行分組。

示例指令碼

var_dump($argc, $argv);

命令列

$ php argc.argv.php --this-is-an-option three\ words\ together or "in one quote"     but\ multiple\ spaces\ counted\ as\ one
int(6)
array(6) {
  [0]=>
  string(13) "argc.argv.php"
  [1]=>
  string(19) "--this-is-an-option"
  [2]=>
  string(20) "three words together"
  [3]=>
  string(2) "or"
  [4]=>
  string(12) "in one quote"
  [5]=>
  string(34) "but multiple spaces counted as one"
}

如果使用 -r 執行 PHP 指令碼:

$ php -r 'var_dump($argv);'
array(1) {
  [0]=>
  string(1) "-"
}

或者通過管道傳輸到 php 的 STDIN:

$ echo '<?php var_dump($argv);' | php
array(1) {
  [0]=>
  string(1) "-"
}