php가 cli 모드에서 매개변수를 수신하는 방법에는 두 가지가 있습니다
1. argv 배열을 사용하세요
2. getopt 메서드를 사용하세요
예: PHP를 실행하고 세 가지를 전달해야 합니다. 매개변수 (유형=news, is_hot=1, 제한=5)
Create test.php
<?phpprint_r($argv);?>
명령줄에서 실행
php test.php news 1 5
출력:
Array( [0] => test.php [1] => news [2] => 1 [3] => 5)
argv[0]이 현재의 이름임을 알 수 있습니다. 실행된 php 파일이고 argv[1] ~argv[3]은 전달된 매개변수의 값입니다
argv[1]은 type
argv[2]의 값과 같습니다 is_hot
argv[3]의 값과 같습니다 는 Limit 값과 같습니다
이러한 방식으로 전달된 매개변수는 argv 배열을 기반으로 얻을 수 있습니다. 후속 처리 작업을 수행합니다.
단점:
argv 배열을 사용하면 전달된 매개변수를 순서대로 가져올 수 있습니다. 그러나 이를 얻은 후에는 해당 처리를 수행해야 합니다. 위의 예에서 argv[1]은 유형 매개변수에 해당하고, argv[2]는 is_hot 매개변수에 해당하며, argv[3]은 제한 매개변수에 해당해야 합니다. . 그리고 전송 과정에서 매개변수를 잘못된 순서로 쓰면 프로그램 오류가 발생합니다.
예:
<?php$param = array();$param['type'] = $argv[1];$param['is_hot'] = $argv[2];$param['limit'] = $argv[3]; print_r($param);?>
Execute
php test.php news 1 5
출력:
Array( [type] => news [is_hot] => 1 [limit] => 5)
전달 순서가 다르면 얻은 매개변수 값이 달라져 후속 프로그램 오류가 발생합니다.
실행
php test.php 1 5 news
출력:
Array( [type] => 1 [is_hot] => 5 [limit] => news )
따라서 argv 배열에 매개변수를 전달할 때 매개변수가 전달되는 순서에 주의해야 합니다.
getopt를 사용하세요.
array getopt ( string $options [, array $longopts ] )
매개변수:
options
이 문자열의 각 문자는 수신 스크립트 옵션과 일치하는 옵션 문자로 처리됩니다. 단일 하이픈(-)으로 시작합니다. 예를 들어, 옵션 문자열 "x"는 -x 옵션을 식별합니다. a-z, A-Z 및 0-9만 허용됩니다.
longopts
옵션 배열. 이 배열의 각 요소는 옵션 문자열로 처리되며 두 개의 하이픈(-)이 있는 스크립트에 전달된 옵션과 일치합니다. 예를 들어, 긴 옵션 요소 "opt"는 옵션 -opt를 식별합니다.
옵션에는 다음 요소가 포함될 수 있습니다.
단일 문자(값은 허용되지 않음)
콜론이 뒤에 오는 문자(이 옵션에는 값이 필요함)
문자 뒤에 콜론 두 개가 따라옴(이 옵션의 값은 선택 사항임) )
Options 값은 문자열 다음의 첫 번째 매개변수입니다. 값 앞에 공백이 있어도 상관 없습니다.
options와 longopts의 형식은 거의 동일합니다. 유일한 차이점은 longopts는 옵션의 배열이어야 하고(각 요소는 옵션임) 옵션에는 문자열이 필요하다는 것입니다(각 문자는 옵션임).
전달된 값의 구분 기호에는 공백이나 =를 사용할 수 있습니다.
선택적 값은 공백을 구분 기호로 허용하지 않으며 =만 구분 기호로 사용할 수 있습니다.
반환 값
이 함수는 옵션/매개변수 쌍을 반환하고 실패 시 FALSE를 반환합니다.
옵션 구문 분석은 옵션이 아닌 첫 번째 발견 시 종료되며, 그 이후의 모든 항목은 삭제됩니다.
a, b, c는 필수 값입니다.
d는 선택 값입니다.
e는 허용되지 않는 값입니다.
<?php$param = getopt('a:b:c:d::e'); print_r($param);?>
Execute
php test.php -a 1 -b 2 -c 3 -d=4 -e 5
출력:
Array( [a] => 1 [b] => 2 [c] => 3 [d] => 4 [e] => )
expire는 허용되지 않는 값입니다.
<?php$longopt = array( 'type:', 'is_hot:', 'limit::', 'expire');$param = getopt('', $longopt); print_r($param);?>
php test.php --type news --is_hot 1 --limit=10 --expire=100
출력:
Array( [type] => news [is_hot] => 1 [limit] => 10 [expire] => )
3. 옵션이 아닌 첫 번째 항목을 찾고 후속 인스턴스는 무시합니다.
<?php$longopt = array( 'type:', 'is_hot:', 'limit::', 'expire');$param = getopt('', $longopt); print_r($param);?>
php test.php --type news --is_hots 1 --limit=10 --expire=100
출력:
Array ( [type] => news )
is_hots는 옵션 값이 아니기 때문에(is_hot이 정의됨) 여기 이후의 모든 매개변수는 삭제됩니다.
요약: argv 배열을 사용하여 매개변수를 전달하면 방법이 간단하고 구현하기 쉽습니다. 매개변수의 순서는 틀릴 수 없으며 매개변수를 얻은 후에 해당 처리를 수행해야 합니다. getopt 메소드를 사용하면 매개변수 이름을 사용할 수 있으며, 매개변수의 순서는 상대적으로 표준화되어 임의적일 수 있습니다. (권장)
이 글에서는 php cli 모드에서 매개변수를 얻는 방법을 소개합니다. 더 많은 관련 내용은 php 중국어 홈페이지를 참고해주세요.
관련 권장 사항:
PHP 코드를 통해 배열의 지정된 키 값을 재귀적으로 얻는 방법위 내용은 PHP cli 모드에서 매개변수를 얻는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!