편집자 주: 처음에 생각한 방법은 C 언어에서 배열을 사용하거나 매크로를 사용하는 것이었습니다. 그런데 인터넷에서 PHP의 구현 방법이 다르다는 것을 발견하여 여기에 기사를 다시 인쇄했습니다
우선, 두 숫자의 합을 계산하는 PHP 함수를 작성해야 하며, 다음과 같이 작성할 수 있습니다.
/** *计算两个数的和,并返回计算的结果 * @param number $a * @param number $b * @return number */ function sum($a, $b){ return $a + $b; }
마찬가지로, 세 숫자의 합을 계산해야 한다면, 다음과 같이 작성할 수 있습니다.
/** *计算两个或三个数的和,并返回计算的结果 * @param number $a * @param number $b * @return number $c 该参数可以不传入值,默认为0 */ function sum($a, $b, $c =0){ return $a + $b + $c; }
이 시점에서 어떤 숫자의 합을 계산해야 한다면 PHP 함수를 어떻게 작성해야 할까요?
물론, 이러한 기능을 달성하기 위해 함수의 전달된 매개변수로 배열을 사용하는 것을 고려할 수도 있습니다.
/** *计算任意多个数的和,函数参数params必须为array类型 * @param array params */ function sum($params){ $total =0; foreach($params as $i){ $total += $i; } return $total; }
글쎄, 이 접근 방식에는 실제로 아무런 문제가 없습니다. 가변 매개변수가 탄생하기 전의 프로그램 개발 과정에서, 전달해야 할 매개변수의 수에 관계없이 이를 표현하기 위해 배열이나 기타 유사한 컬렉션이 사용되었습니다. 하지만 이런 전달 방식은 충분히 명확하고 직관적이지 않나요? PHP 프로그래머라면 PHP에 변수에 대한 자세한 정보를 표시하는 var_dump() 함수가 있다는 것을 알아야 합니다. 예를 들면 다음과 같습니다.
$age =18; var_dump($age);//显示变量$age的详细信息
여러 변수에 대한 정보를 표시해야 하는 경우 다음을 수행할 수도 있습니다. 다음과 같이 사용하세요:
$name ='张三'; $age =18; $gender =true; var_dump($name, $age, $gender);
우리는 var_dump()가 동시에 여러 개의 변수를 받을 수 있고 배열 형식으로 전달할 필요가 없다는 것을 알고 있습니다. 더 직관적이고 우아합니다. 이러한 방식으로 매개변수를 여러 개 전달하는 방식을 가변 매개변수라고 합니다. 물론 sum() 함수는 다음과 같은 방식으로 구현할 수도 있습니다.
/** *计算任意多个数的和,并返回计算后的结果 */ function sum(){ //这里的括号中没有定义任何参数 $total =0; //使用func_get_args()来获取当前函数的所有实际传递参数,返回值为array类型 $varArray = func_get_args(); foreach($varArray as $var){ $total += $var; } return $total; }
/*****다음은 호출 예시입니다*****/
echo sum(1,3,5); //计算1+3+5 echo sum(1,2);//计算1+2 echo sum(1,2,3,4); //计算1+2+3+4
위의 예에서 볼 수 있듯이 현재 함수에서 PHP 내장 함수 func_get_args()를 사용하면 함수 호출 시 전달된 실제 매개변수 배열을 얻을 수 있으며 그런 다음 매개변수 배열만 처리하면 됩니다.
참고 1: 1. 호출 시 매개변수가 전달되지 않으면 func_get_args() 함수는 여전히 배열 유형을 반환하지만 빈 배열(배열에는 요소가 포함되지 않음)이 반환됩니다. 2.func_get_args()는 함수 내에서만 호출할 수 있습니다. 그렇지 않으면 경고 메시지가 표시됩니다. 3. func_get_args() 함수는 인덱스 매개변수를 수신하여 매개변수 배열의 지정된 인덱스에 있는 매개변수를 얻을 수 있습니다. 예를 들어, 첫 번째 인수를 전달하려면 func_get_args(1)를 호출하면 됩니다. 4. 또한 함수에서 func_num_args()를 호출할 수도 있으며, 이는 현재 함수 호출에 전달된 매개변수 수를 반환할 수 있습니다.
참고 2: PHP의 변수 매개변수 구현은 JavaScript의 변수 매개변수 구현과 매우 유사합니다. PHP는 이를 구현하기 위해 내장 함수 func_get_args()를 사용하고 JavaScript는 내장 함수를 사용합니다. 이를 구현하기 위한 가변 인수.
주의 3: 최종 sum() 함수 코드에서 sum() 함수는 형식적인 매개 변수를 정의하지 않으므로 이 함수 호출 시 0, 1, 2~n 매개 변수를 전달할 수 있습니다. 그러나 일반적으로 합계를 계산하려면 최소한 두 개의 숫자가 필요합니다. 따라서 sum() 함수 정의에서 두 가지 형식 매개변수(예: sum($a, $b))를 정의할 수 있으며 다른 코드는 변경되지 않습니다. 이런 방식으로 이 함수를 호출할 때 최소한 두 개의 매개변수를 전달해야 합니다.
참고 4: PHP에는 배열의 모든 요소의 합을 계산하는 내장 함수 array_sum()이 있으므로 위 코드의 최종 버전은 다음과 같습니다.
/** *计算任意多个数的和,并返回计算后的结果 */ function sum($a, $b){ return array_sum(func_get_args()); }
위 내용은 내용의 측면을 포함하여 PHP에서 변수 매개변수 구현을 수행하는 방법을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.
관련 기사:

phpsession 실패 이유에는 구성 오류, 쿠키 문제 및 세션 만료가 포함됩니다. 1. 구성 오류 : 올바른 세션을 확인하고 설정합니다. 2. 쿠키 문제 : 쿠키가 올바르게 설정되어 있는지 확인하십시오. 3. 세션 만료 : 세션 시간을 연장하기 위해 세션을 조정합니다 .GC_MAXLIFETIME 값을 조정하십시오.

PHP에서 세션 문제를 디버그하는 방법 : 1. 세션이 올바르게 시작되었는지 확인하십시오. 2. 세션 ID의 전달을 확인하십시오. 3. 세션 데이터의 저장 및 읽기를 확인하십시오. 4. 서버 구성을 확인하십시오. 세션 ID 및 데이터를 출력, 세션 파일 컨텐츠보기 등을 통해 세션 관련 문제를 효과적으로 진단하고 해결할 수 있습니다.

Session_Start ()로 여러 통화를하면 경고 메시지와 가능한 데이터 덮어 쓰기가 발생합니다. 1) PHP는 세션이 시작되었다는 경고를 발행합니다. 2) 세션 데이터의 예상치 못한 덮어 쓰기를 유발할 수 있습니다. 3) Session_status ()를 사용하여 반복 통화를 피하기 위해 세션 상태를 확인하십시오.

SESSION.GC_MAXLIFETIME 및 SESSION.COOKIE_LIFETIME을 설정하여 PHP에서 세션 수명을 구성 할 수 있습니다. 1) SESSION.GC_MAXLIFETIME 서버 측 세션 데이터의 생존 시간을 제어합니다. 2) 세션 .Cookie_Lifetime 클라이언트 쿠키의 수명주기를 제어합니다. 0으로 설정하면 브라우저가 닫히면 쿠키가 만료됩니다.

데이터베이스 스토리지 세션 사용의 주요 장점에는 지속성, 확장 성 및 보안이 포함됩니다. 1. 지속성 : 서버가 다시 시작 되더라도 세션 데이터는 변경되지 않아도됩니다. 2. 확장 성 : 분산 시스템에 적용하여 세션 데이터가 여러 서버간에 동기화되도록합니다. 3. 보안 : 데이터베이스는 민감한 정보를 보호하기 위해 암호화 된 스토리지를 제공합니다.

SessionHandlerInterface 인터페이스를 구현하여 PHP에서 사용자 정의 세션 처리 구현을 수행 할 수 있습니다. 특정 단계에는 다음이 포함됩니다. 1) CustomsessionHandler와 같은 SessionHandlerInterface를 구현하는 클래스 만들기; 2) 인터페이스의 방법 (예 : Open, Close, Read, Write, Despare, GC)의 수명주기 및 세션 데이터의 저장 방법을 정의하기 위해 방법을 다시 작성합니다. 3) PHP 스크립트에 사용자 정의 세션 프로세서를 등록하고 세션을 시작하십시오. 이를 통해 MySQL 및 Redis와 같은 미디어에 데이터를 저장하여 성능, 보안 및 확장 성을 향상시킬 수 있습니다.

SessionId는 웹 애플리케이션에 사용되는 메커니즘으로 사용자 세션 상태를 추적합니다. 1. 사용자와 서버 간의 여러 상호 작용 중에 사용자의 신원 정보를 유지하는 데 사용되는 무작위로 생성 된 문자열입니다. 2. 서버는 쿠키 또는 URL 매개 변수를 통해 클라이언트로 생성하여 보낸다. 3. 생성은 일반적으로 임의의 알고리즘을 사용하여 독창성과 예측 불가능 성을 보장합니다. 4. 실제 개발에서 Redis와 같은 메모리 내 데이터베이스를 사용하여 세션 데이터를 저장하여 성능 및 보안을 향상시킬 수 있습니다.

JWT 또는 쿠키를 사용하여 API와 같은 무국적 환경에서 세션을 관리 할 수 있습니다. 1. JWT는 무국적자 및 확장 성에 적합하지만 빅 데이터와 관련하여 크기가 크다. 2. 쿠키는보다 전통적이고 구현하기 쉽지만 보안을 보장하기 위해주의해서 구성해야합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.
