공부 내용 정리 PHP :: 기초 IV
# 함수
php에서의 함수 정의와 호출은 다음과 같다.
function 함수이름 ( 인자 ) {
코드
return 값
}
php의 함수도 자바스크립트와 유사하게 함수를 선언한다. 예제는 다음과 같다.
<?php
# 함수의 선언
function numbering() {
$i = 0;
while ( $i < 10 ) {
echo $i;
$i += 1;
}
}
?>
# 함수의 호출
numbering();
php에서 함수에 인자는 다음과 같이 받는다.
<?php
function get_argument ($arg) {
return $arg;
get_argument(1);
?>
복수의 인자는 다음과 같이 받는다.
<?php
function get_argument ($args1, $args2) {
#인자 1, 인자2
return $args1 + $args2;
#지역변수1 #지역변수2
get_argument(5, 5); # 10
?>
php의 함수는 python과 같이, 인자에게 기본값을 부여할 수 있다. 다음과 같다.
function get_arguments($arg1 = 100){
return $arg1;
}
#인자를 부여했을 경우
echo get_arguments(1); # 1
#인자를 부여하지 않았을 경우
echo get_arguments(); #100
기본값이 있더라도 인자를 부여하면 인자를 가지고 함수를 실행하게되고, 인자를 부여하지 않으면 기본값으로서 함수를 실행하게 된다.
# 배열 (Array)
PHP의 배열의 상세한 내용에 대한 학습을 진행하였다. 내용은 다음과 같다.
$myArray = [ 'a', 'b', 'c' ];
php의 배열 선언은 상기 코드와 같다. 다른 언어와 같이 배열을 선언한다. 배열 안의 값을 호출하는 방법도 마찬가지로 인덱스로 호출하는 형태로 이루어져 있다.
$myArray = [ 'a', 'b', 'c' ];
echo $myArray[0]; # a
echo $myArray[1]; # b
echo $myArray[2]; # c
상기 코드 블럭과 같이 배열의 인덱스로 내부의 값을 호출하여 가져올 수 있다. 함수를 이용한 간단한 응용은 다음과 같다.
function getElements() {
return [ 'a', 'b', 'c' ];
}
$temp = getElements();
echo $temp[0]; # a
echo $temp[1]; # b
echo $temp[2]; # c
상기와 같이 배열을 리턴하는 함수를 정의하여 변수에 할당하면, 해당 변수를 배열로서 사용할 수 있게 되는 것이다.
함수와 배열 그리고 반복문을 이해하기 위한 예제를 주석과 함께 작성해보았다. 다음과 같다.
<body>
<?php
# 오렌지 박스의 오렌지를 전부 꺼내서 검사하기
# 5개의 오렌지가 들어있는 배열
$orangeBox = [ 'orange1', 'orange2', 'orange3', 'orange4', 'orange5' ];
# 오렌지를 검사하는 함수 정의
function insfectOrange( $objects ) {
for ( $i = 0 ; $i < count($objects) ; $i++ ) {
echo $objects[$i]." checked!"."<br>";
}
# 반복문이 끝난 후 완료를 알림
echo "Done";
}
#함수 호출
insfectOrange($orangeBox)
?>
</body>
# 배열에 요소 추가
배열에 값을 추가하는 함수는 다음과 같다.
# 마지막 인덱스에 추가하기
$myArray = ['a','b','c']
array_push($myArraay, 'd');
# ['a', 'b', 'c', 'd']
# 첫번째 인덱스에 추가하기
$myArray = ['a','b','c']
array_unshift($myArraay, 'A');
# ['A', 'a', 'b', 'c']
array_push는 array의 제일 마지막 인덱스에 요소를 추가하는 기능을 갖고있다. array_push(배열명, 요소값)으로 사용한다. 반대로 array_unshif는 배열의 가장 첫번째 인덱스에 요소를 추가하는 기능을 갖고있다.
# 배열에 요소 제거
배열의 요소를 제거하는 함수는 다음과 같다.
# 첫번 째 인덱스의 값 제거
$myArray = ['a','b','c']
array_shift($myArraay);
# ['b', 'c']
# 마지막 인덱스의 값 제거
$myArray = ['a','b','c']
array_pop($myArraay);
# ['a', 'b']
array_shift는 첫번째 인덱스에 있는 값을 제거하는 함수이다. 인자로 배열을 주면 삭제된다. array_pop은 마지막 인덱스에 있는 값을 지우는 함수이다. 마찬가지로 인자로 배열을 주면 마지막 값을 삭제한다.
# 연관배열 (Associative Array)
연관배열은 python 에서의 DIctionary 와 유사한 개념이다. Array의 인덱스 대신, key를 부여하여 Array처럼 사용할 수 잇도록 마련해 놓은 것을 PHP에서는 연관배열이라 일컫는다 예제는 다음과 같다.
# 연관배열의 선언 및 키와 값 호출
일반적으로 인덱스로 값을 호출하는 indexed array와는 달리 Associative Array는 key로서 배열에 저장되어있는 값을 호출하도록 설계되어있다. 형태는 같은 배열이지만 안의 내용물이 완전히 다른 형태로 되어있는 것이다. 이러한 연관배열을 선언하는 방법은 다음과 같다.
# 연관배열 선언 1
# array( 키이름 => 값 );
$myArray = array( 'A' => 1, 'B' => 2, 'C' => 3 );
# 연관배열 선언 2
# 빈 Array 선언
$myArray = [];
# Array이름[키이름] = 값;
$Array['A'] = 1;
$Array['B'] = 2;
$Array['C'] = 3;
연관배열의 구조는 선언방법과 관계없이 상기 코드블럭의 연관배열1과 같은 형태로 되어있다. 두가지 방법중 어떤것을 이용해도 연관배열을 불러오면, 하기와 같은 형태로 이루어져 있는 배열을 리턴받게된다.
[ 'A' => 1, 'B' => 2, 'C' => 3 ]
이러한 연관배열의 요소를 열거하는 방법은 다음과 같다.
# 연관배열 열거 1
$myArray = array( 'A' => 1, 'B' => 2, 'C' => 3 );
# 키값을 지정해서 직접 불러오기
echo $myArray['A']; # 1
echo $myArray['B']; # 2
echo $myArray['C']; # 3
# 연관배열 열거 2
$myArray = array( 'A' => 1, 'B' => 2, 'C' => 3 );
# foreach문을 이용하여 열거
# foreach문은 key 와 value로 이루어져있는 연관 배열에서 쓸수 있는 구문
# for문은 indexed array에서 사용 가능한 구문
foreach ( $myArray as $key => $value) {
echo "key: {$key} => value : {$value} <br>"
}
/*
key : A => value : 1
key : B => value : 2
key : C => value : 3
*/
foreach문은 foreach( 배열명 as 키 명 => 값) { 반복코드 }; 의 구조로 이루어지는 구문이다. foreach와 for문의 다른 점은, for문의 경우 반복의 횟수 혹은 반복될 횟수 등을 for문의 조건안에 삽입하여 횟수를 지정해주어야했지만, foreach문은 배열명을 기입할 때 알아서 배열의 크기를 알아서 배열에 존재하는 요소를 하나씩 꺼내서 전부 반복코드에 넣어주는 형식으로 이루어져있다.