함수값 반환
function sum($x, $y)
{
return $x + $y;
}
echo sum(1,2); // sum()함수에 숫자 1와 2를 인수로 전달하여 호출한다.
함수의 반환값을 원하는 타입으로 반환받을 수 있도록, 반환값의 타입을 직접 지정이 가능
약한 강도로 함수의 반환 타입을 설정가능
function sum($x, $y) : float
{
return $x + $y;
}
var_dump(sum(3+4)); //float
강한 강도로 함수의 반환 타입을 설정
declare(strict_types = 1); //strict모드로 설정함.
function sum($x, $y) : float //반환값의 타입을 float타입으로 설정함
{
return $x + $y;
}
var_dump(sum(3 + 4)); //오류가 발생함 -정수로 반환하기 때문
var_dump(sum(3 + 4.5)); //float
매개변수의 값 전달방식
1. 값 전달 (passing by value)
인수를 함수에 전달하면, 새롭게 생성된 매개변수에 전달받은 값이 복사되어 저장된다.
매개변수에 저장된 값은 전달받은 데이터의 복사본으로, 함수 안에서 변경되어도 함수 밖의 원본 데이터에 영향을 주지 않음.
function increment($param)
{
$param++; // $value의 값을 복사하여 increment()함수에 인수로 전달
}
$value = 1;
increment($value);
2. 참조 전달 (passing by reference)
주소를 전달하기 때문에, 함수 밖에 존재하는 변수 $value의 값이 같이 변경이된다.
function increment(&$param)
{
$param++;
}
$value = 1;
increment($value);
3. 가변 길이 인수 목록
가변 길이 인수 목록은 함수를 선언할 때 전달받을 인수의 개수를 미리 정하지 않고, 호출할 때마다 유동적으로 인수를 넘기는 기능입니다.
function sum(...$num) //PHP 5.6이상
{
$sum = 0;
foreach($num as $n) {
$sum += $n;
}
return $sum;
}
함수의 활용
function out()
{
function in()
{
echo "이제 함수를 사용할 수 있습니다";
}
}
in(); //이 부분은 in()함수가 선언되기 전이므로 함수를 호출할 수 없다.
out(); //out함수가 호출되면서 in()함수가 호출되어서 in()함수를 호출할 수 있다.
재귀함수(recursive function)
재귀함수란 함수 내부에서 재귀적으로 호출되는 함수
함수 내에 재귀 호출을 중단하도록 조건이 변경될 명령문을 반드시 포함해야한다.
function first()
{
echo "first()함수 입니다.<br>";
}
function second($param)
{
echo "second()함수입니다.<br>";
echo "함수 호출 시 전달받은 인수의 값은 {$param}입니다.";
}
$func = "first";
$func();
$func = "second"
$func(20); //second함수를 호출함
변수 관련 함수
변수 타입 반환
$x = 5;
echo gettype($x); //integer
settype($x, "string");
echo gettype($x); //string
배열 요소의 개수
count()함수와 sizeof() 함수는 배열에 저장된 배열 요소의 개수를 반환한다.
array_count_values($arr) : 배열 요소의 값을 키로 하고, 해당 값의 등장 빈도를 값으로 하는 연관배열을 반환
sort($arr) : 배열 정렬
$arr_02 = array_reverse($arr) : 배열 요소를 역순으로 바꾼 새로운 배열을 반환한다.
문자열 추출하기
substr($str, 3); //네번째 문자부터 끝까지 추출
substr($str, 1, -5); //두번째 문자부터 뒤에서 여섯 번째 문자까지 출력
'Language > PHP' 카테고리의 다른 글
[ERROR] Fatal error Call to a member function on a non-object (0) | 2022.11.28 |
---|---|
클래스와 객체, 정적 멤버 (0) | 2022.09.02 |
PHP의 배열 (0) | 2022.09.02 |
타입변환, 기타 연산자 (0) | 2022.09.02 |
PHP 기본 타입 (0) | 2022.09.02 |