PHP에서 명령행 매개변수를 가져오는 방법
$argv 모든 공백으로 구분된 매개 변수 목록 얻기
이 변수는 모두가 비교적 많이 사용하는 접참 변수로 추정된다.이것은 PHP가 우리를 위해 준비한 고정 변수입니다. 목적은 스크립트에 전달되는 매개 변수 그룹을 가져오는 것입니다.
print_r($argv);
// php PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd
// Array
// (
// [0] => PHP .php
// [1] => --a=1
// [2] => -b=2
// [3] => -c=3
// [4] => -d=4
// [5] => --e=5
// [6] => ccc
// [7] => ddd
// )
이 배열은 매개 변수 간격의 빈칸으로 구분된다.첫 번째 요소는 현재 실행 중인 스크립트 파일 이름입니다. 즉, 파라미터가 있든 없든 이 변수는 $argv[0]가 현재 스크립트 파일 이름을 표시합니다.일상적인 개발 수요에서 사실 이 변수를 사용하면 충분하다.그러나 이것은 분명히 우리의 오늘의 주제가 아니다. 여러분은 위의 코드에 우리가 많은 매개 변수가 -x=xx의 형식이라는 것을 알아차렸다. 이런 형식의 매개 변수는 Linux의 명령 옵션과 매우 비슷하지 않은지, 이것이 바로 우리가 오늘 중점적으로 소개하고자 하는 것이다. 명령행 참수 목록에서 옵션을 얻는 것이다.
getopt() 명령행 매개 변수 목록에서 옵션 가져오기
사실 이런 간단한 함수입니다. 우리는 Linux의 명령 옵션처럼 지정한 명령 값을 얻을 수 있습니다.또한 $argv와 같이 빈칸으로 구분하는 것이 아니라, 명령 옵션 함수는 이 명령 옵션을 수조로 봉하여 옵션 이름을 키로 하고, 등호 뒤의 내용을 값으로 하는 수조로 구성하여 우리가 사용하기에 더욱 편리하다.
// php PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd
print_r(getopt('a:b:c:d:e:f:'));
// Array
// (
// [b] => 2
// [c] => 3
// [d] => 4
// )
신기하고 직관적이지 않습니까? 우리는 b, c, d의 내용을 직접 얻었고 형식이 매우 뚜렷한 키 값 그룹 형식입니다.물어볼 학생이 있는데, a와 e는요?그리고 뒤에 ccc, ddd는요?먼저 설명하고자 하는 것은 ccc와 ddd는 표준적인 옵션 매개 변수가 아니다. 즉, 이 함수가 수신하는 내용은 -로 시작하는 옵션이기 때문에 ccc와 ddd는 여기서 출력되지 않을 것이다. 그리고 주의해야 할 것은 비옵션 매개 변수는 옵션 매개 변수의 획득을 중단할 것이다. cc 이후에 -로 시작하는 옵션을 계속 추가하면 얻을 수 없다. 이것은 우리가 뒤에서 볼 수 있다.그리고 - 처음에 옵션 파라미터는요?우리는 아래의 긴 옵션 기능을 직접 보았다.
긴 옵션
// php PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd
print_r(getopt('', ['a:','b:','c:','d:','e:','f:']));
// Array
// (
// [a] => 1
// [e] => 5
// )
맞아요. getopt () 함수의 두 번째 매개 변수는 바로 이런 - 시작하는 긴 옵션을 정의하는 것입니다. 그리고 주의해야 할 것은 첫 번째 매개 변수는 문자열 형식이고, 두 번째 긴 매개 변수는 그룹 형식입니다.그러면 우리가 그것들을 결합하면 당연히 모든 매개 변수 정보를 얻을 수 있다.
// php PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd
print_r(getopt('a:b:c:d:e:f:', ['a:','b:','c:','d:','e:','f:']));
// Array
// (
// [a] => 1
// [b] => 2
// [c] => 3
// [d] => 4
// [e] => 5
// )
OK, 매개 변수 옵션 획득에 문제가 없겠지. 세심한 학생이 또 문제를 발견했을 거야. 이 getopt () 함수의 매개 변수에 정의된 옵션 이름 뒤에 왜 사칭을 붙여야 돼?이것은 우리의 사칭 규칙과 관련이 있으니 직접 아래를 보십시오.콜론 규칙
getopt () 의 처음 두 매개변수는 옵션 가져오기 규칙을 지원합니다.
//
// php PHP .php --a=1 -b=2 -c=3 -d=4 --e=5 ccc ddd
print_r(getopt('abcdef'));
// Array
// (
// [b] =>
// [c] =>
// [d] =>
// )
//
// php PHP .php -f
print_r(getopt('f::'));
// Array
// (
// [f] =>
// )
print_r(getopt('f:'));
// Array
// (
// )
//
// php PHP .php -f 22
print_r(getopt('f::'));
// Array
// (
// [f] =>
// )
print_r(getopt('f:'));
// Array
// (
// [f] => 22
// )
//
// php PHP .php -f=22
print_r(getopt('f::'));
// Array
// (
// [f] => 22
// )
print_r(getopt('f:'));
// Array
// (
// [f] => 22
// )
이 단락은 비교적 길니, 우리 함께 보자.우선 짝퉁이 없는 abcdef 쓰기 방법은 되돌아오는 그룹에 키를 포함하지만 값이 없습니다. 위의 규칙은 이 매개 변수 옵션의 값을 받아들이지 않는 것입니다. 이 매개 변수 옵션도 키 이름만 있고 내용은 비어 있습니다.두 번째 단락은 매개 변수를 정의했지만 값을 주지 않았습니다. 이때 쌍사칭::키 이름이 있을 것이고 단사칭:는 아무것도 없습니다.
세 번째 단락은 공백 형식의 옵션 값입니다. 이중 콜론::키 이름은 있지만 값이 없습니다. 단일 콜론:키 값은 정상입니다.
네 번째 단락은 등호 = 형식의 옵션 값으로 짝퉁 번호가 키 값을 정상적으로 수신합니다.
옵션 매개 변수 인터럽트
위에서 언급한 매개 변수 중단 문제는 옵션 매개 변수 다음에 비옵션 매개 변수의 매개 변수가 나타나면 getopt () 는 이 비옵션 매개 변수 뒤에 있는 모든 내용을 얻을 수 없다는 것입니다.
// php PHP .php -f=22 aa -b=33
// , 。
// Array
// (
// [f] => 22
// )
이 테스트를 통해 뒤에 있는 b 옵션을 얻을 수 없음을 뚜렷하게 알 수 있습니다.이때 옵션 파라미터가 어디에 있는지 알고 싶거나 어떤 파라미터 때문에 중단되면 getopt () 함수의 세 번째 파라미터를 사용할 수 있습니다.
// php PHP .php -f=22 aa -b=33
$optind = null;
getopt('f:b:', [], $optind);
echo $optind, PHP_EOL; // ,2
echo $argv[$optind], PHP_EOL; // $argv ,aa
주석이 명확하게 썼습니다. 세 번째 인자는 인자 옵션이 중단된 위치의 인덱스를 되돌려줍니다. 이 인덱스는 $argv의 인덱스 순서 위치와 일치합니다.총결산
솔직히 문서를 보기 전에 $argv 변수가 명령행 스크립트의 매개 변수를 얻을 수 있다는 것만 알았습니다. 이번 학습을 통해 이렇게 강력한 옵션 매개 변수 함수가 있다는 것을 알게 되었습니다.학습 과정은 매우 간단하다. 어떻게 실제 프로젝트에 활용하는가가 관건이다. 열심히 공부하고 열심히 실천해라!
테스트 코드:
github.com/zhangyue050…
이상은 PHP가 명령행 파라미터를 어떻게 얻는지에 대한 상세한 내용입니다. PHP가 명령행 파라미터를 얻는 것에 대한 더 많은 자료는 저희 다른 관련 글을 주목해 주십시오!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
laravel에 yo에서 angularJs&coffeescript를 사용할 수 있도록 한다.먼저 yo 명령을 사용할 수 있어야하므로 아래에서 설치 global에 설치한 곳에서 laravel의 프로젝트 루트로 이동. 클라이언트 코드를 관리하는 디렉토리를 만들고 이동합니다. 클라이언트 환경 만들기 이것으로 히...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.