쟝이의 세상
php <배열과 함수> 본문
배열
: 연관된 데이터를 모아서 관리하기 위해서 사용되는 데이터 타입 -> 자료형을 선언하면 연속된 메모리 공간에 할당
-> 종류: 1차원, 2차원, 3차원 배열
1차원 배열
<?php
//배열과 함수
/* 배열을 사용하지 않은 경우
$kor=85; //int
$eng=98;
$math=76;
$society=72;
$science=93;
*/
//배열을 사용하는 경우
$score[0]=85;
$score[1]=98;
$score[2]=76;
$score[3]=72;
$score[4]=93;
$sum=0;
for($a=0; $a<=4; $a++){
$sum+=$score[$a];
}
$avg=$sum/5;
echo "과목 점수: $score[0], $score[1], $score[2], $score[3], $score[4]<br>";
echo "총점: {$sum}, 평균: {$avg}";
?>
/*
과목 점수: 85, 98, 76, 72, 93
총점: 424, 평균: 84.8
*/
인덱스의 개수는 5개, 각 인덱스의 번호는 0부터 4까지. --> score[0] score[1] score[2] score[3] score[4] |
배열을 사용할 경우 -- for문을 통해서 자동 연산 기능 사용 가능 => 활용도가 높다. |
** array( ) 함수를 활용하였을 때
<?php
//array() 함수를 이용하여 학생 20명의 영어성적 입력
$eng_score=array(87, 76, 98, 87, 87, 93, 79, 85, 88, 63, 74, 84, 93, 89, 63, 99, 81, 70, 80, 95); //$eng_score[20]과 같음
$sum=0;
for($i=0; $i<=19; $i++){
$plus=$i+1;
echo "학생 {$plus}의 성적: {$eng_score[$i]}<br>";
$sum+=$eng_score[$i];
}
$avg=$sum/20;
echo "-------------------------<br>";
echo "총점: {$sum}, 평균: {$avg}<br>";
echo "-------------------------<br>";
$length=count($eng_score);
echo "배열의 길이는 {$length}입니다. <br>";
print_r($eng_score);
?>
/*
학생 1의 성적: 87
학생 2의 성적: 76
학생 3의 성적: 98
학생 4의 성적: 87
학생 5의 성적: 87
학생 6의 성적: 93
학생 7의 성적: 79
학생 8의 성적: 85
학생 9의 성적: 88
학생 10의 성적: 63
학생 11의 성적: 74
학생 12의 성적: 84
학생 13의 성적: 93
학생 14의 성적: 89
학생 15의 성적: 63
학생 16의 성적: 99
학생 17의 성적: 81
학생 18의 성적: 70
학생 19의 성적: 80
학생 20의 성적: 95
-------------------------
총점: 1671, 평균: 83.55
-------------------------
배열의 길이는 20입니다.
Array ( [0] => 87 [1] => 76 [2] => 98 [3] => 87 [4] => 87 [5] => 93 [6] => 79 [7] => 85 [8] => 88 [9] => 63 [10] => 74 [11] => 84 [12] => 93 [13] => 89 [14] => 63 [15] => 99 [16] => 81 [17] => 70 [18] => 80 [19] => 95 )
*/
array( ) 함수: 기본적인 배열을 생성시키는 함수 --- array( )함수를 사용하여 $eng_score 변수에 배열을 생성시킨다. => $eng_score[20] |
count( ) 함수: 주어진 배열의 모든 요소의 개수(array length)를 계산해서(count) 정수로 반환하는 함수 --- count( )함수를 사용하여 해당 배열의 개수를 반환한다. => 반환한 정수 값은 $length 변수에 저장 |
print_r( ) 함수: 배열을 출력할때 " Array ( ['index번호'] => "값" .... ) " 의 형태로 표현 --- print_r( )함수를 사용하여 value값을 출력 |
** for문을 활용하여 배열의 값을 입력
<?php
/*
1) 배열 $a에 for문을 이용하여 1~10까지의 값을 입력
2) 배열 $b에 for문을 이용하여 10~1까지의 값을 입력
3) 배열 $c에 배열 $a와 배열 $b의 원소를 곱한 결과 입력
4) 배열 $c의 값을 출력하시오.
*/
echo "배열 a의 값: ";
for($i=0; $i<10; $i++){
$num=$i+1;
$a[$i] = $num;
echo "$a[$i] ";
}
echo "<br>배열 b의 값: ";
for($j=0; $j<10; $j++){
$num2=$j+1;
$b[$j]=10-$j;
echo "$b[$j] ";
}
echo "<br>배열 c의 계산: <br>";
for($h=0; $h<10; $h++){
$c[$h]=$a[$h]*$b[$h];
echo "$a[$h] * $b[$h] = $c[$h]<br>";
}
echo "<br>배열 c의 값: ";
for($h=0; $h<10; $h++){
$c[$h]=$a[$h]*$b[$h];
echo "$c[$h] ";
}
?>
/*
배열 a의 값: 1 2 3 4 5 6 7 8 9 10
배열 b의 값: 10 9 8 7 6 5 4 3 2 1
배열 c의 계산:
1 * 10 = 10
2 * 9 = 18
3 * 8 = 24
4 * 7 = 28
5 * 6 = 30
6 * 5 = 30
7 * 4 = 28
8 * 3 = 24
9 * 2 = 18
10 * 1 = 10
배열 c의 값: 10 18 24 28 30 30 28 24 18 10
*/
2차원 배열
: 배열의 요소로 1차원 배열을 가지는 배열
ex) 학생 5명의 국, 영, 수, 사, 과의 성적 |
$score[0][0] : 첫번째 학생의 국어성적 $score[1][1] : 두번째 학생의 영어성적 $score[2][2] : 세번째 학생의 수학성적 $score[3][3] : 네번째 학생의 사회성적 $score[4][4] : 다섯번째 학생의 과학성적 -- 앞에 $score[0]은 배열 요소명이다. -- $score[행][열] |
** for문을 활용하여 2차원 배열의 합계 및 평균 구하기
<?php
/*
2차원 배열을 이용하여 세 학생이 받은 다섯 과목 점수의 합계와 평균을 계산하는 프로그램
국, 영, 수, 사, 과
*/
$score=array(array(88, 98, 96, 77, 63),
array(86, 77, 66, 86, 93),
array(74, 83, 95, 86, 97));
//입력된 점수와 배열의 인덱스 출력 $score[$i][$j]
for($i=0; $i<3; $i++){
for($j=0; $j<5; $j++){
echo "\$score[$i][$j]=".$score[$i][$j]."<br>";
}
}
echo "<br><br>";
//각 과목별 총점과 평균을 계산하여 출력하시오.
$subject=array("국어", "영어", "수학", "사회", "과학");
for($i=0; $i<5; $i++){
$sum1[$i]=0;
for($j=0; $j<3; $j++){
$sum1[$i]+=$score[$j][$i];
}
echo "{$subject[$i]}의 합계: $sum1[$i] <br>";
$avg1=number_format($sum1[$i]/3 ,2);
echo "{$subject[$i]}의 평균: {$avg1} <br><br>";
}
//각 학생별 총점과 평균을 계산하여 출력하시오.
for($i=0; $i<3; $i++){
$num2=$i+1;
$sum2[$i]=0;
for($j=0; $j<5; $j++){
$sum2[$i]+=$score[$i][$j];
}
echo "학생 {$num2}의 합계: $sum2[$i] <br>";
$avg2=$sum2[$i]/5;
echo "학생 {$num2}의 평균: {$avg2} <br><br>";
}
?>
/*
$score[0][0]=88
$score[0][1]=98
$score[0][2]=96
$score[0][3]=77
$score[0][4]=63
$score[1][0]=86
$score[1][1]=77
$score[1][2]=66
$score[1][3]=86
$score[1][4]=93
$score[2][0]=74
$score[2][1]=83
$score[2][2]=95
$score[2][3]=86
$score[2][4]=97
국어의 합계: 248
국어의 평균: 82.67
영어의 합계: 258
영어의 평균: 86.00
수학의 합계: 257
수학의 평균: 85.67
사회의 합계: 249
사회의 평균: 83.00
과학의 합계: 253
과학의 평균: 84.33
학생 1의 합계: 422
학생 1의 평균: 84.4
학생 2의 합계: 408
학생 2의 평균: 81.6
학생 3의 합계: 435
학생 3의 평균: 87
*/
함수
: 입력(매개변수) --> 코드실행 --> 출력값(return)
- 함수의 종류 : 내장함수, 사용자 정의 함수
- 문법: function 함수명( ) { 코드1; 코드2; }
- 내장함수:
< 수학 관련 > date() - 현재 날짜 계산
round() - 반올림
max() - 최댓값
rand() - 임의의 난수 생성< 문자열 관련 > explode() - 문자열 분리
strlen() - 문자열의 길이 계산
substr() - 문자열의 일부 추출
nl2br() - 행바꿈(\n) --> <br>로 변환
sprintf() - 문자열을 특정 양식에 맞춤
내장함수
<?php
//각종 문자열 관련 함수 사용하기
$tel="010-2777-3333";
$num_tel=strlen($tel); //strlen(): 문자열의 길이
echo "strlen()함수 사용: {$num_tel}<br>";
$tel1=substr($tel, 0, 3); //$tel변수에서 인덱스 0번부터 3글자
$tel2=substr($tel, 4, 4); //$tel변수에서 인덱스 4번부터 4글자 -> 2777
$tel3=substr($tel, 9, 4); //$tel변수에서 인덱스 9번부터 4글자 -> 3333
echo "substr()함수 사용: {$tel1} {$tel2} {$tel3}<br>";
$phone=explode("-",$tel); //배열 값으로 리턴
echo "explode()함수 사용: $phone[0] $phone[1] $phone[2]";
?>
/*
strlen()함수 사용: 13
substr()함수 사용: 010 2777 3333
explode()함수 사용: 010 2777 3333
*/
사용자 정의 함수
-> 리턴 값이 있는 함수와 리턴 값이 없는 함수 처리법
<?php
//두 수를 더하여 리턴하는 함수
function plus($a, $b) {
$c=$a+$b;
echo "{$c}";
}
function plus2($a, $b) {
$c=$a+$b;
return $c;
}
plus(15, 25);
echo "<br>";
$rs=plus2(16, 26);
echo "$rs<br>";
$rs2=plus2(3500, 1500);
echo "$rs2";
?>
/*
40
42
5000
*/
plus 함수의 $a와 $b는 매개변수(=parameter) plus2 함수의 $a와 $b도 매개변수(=parameter) |
두 함수의 차이점 - plus() 함수는 return 값이 아닌 echo로 출력을 해주는 함수 - plus2() 함수는 return 값으로 반환해주는 함수 |
return된 값은 일시적으로 저장되고 사라지므로 $rs 변수에 받아서 출력해 줌 -> 변수에 저장만 하고 echo로 출력해주지 않으면 값은 출력되지 않음 |
** 세 수의 연산
<?php
//세 수를 +, - 연산
function bbb($a, $b, $c) {
$rs=$a+$b-$c;
return $rs;
}
$first=500;
$second=200;
$third=300;
$result=bbb($first, $second, $third);
echo "세 수의 연산: {$result}";
?>
/*
세 수의 연산: 400
*/
bbb함수의 매개변수 $a, $b, $c -> 매개변수 3개 $result 변수에 받는 bbb함수의 인자 값 $first, $second, $third -> 인자 값 3개 |
초기값이 세팅되어있을 때를 제외하고 매개변수의 개수와 인자 값의 개수가 일치해야 한다. |
** 입력받은 값의 사이값 더하기
<?php
//hap($a, $b) 함수는 $a부터 $b까지의 합을 구하는 프로그램
function hap($a, $b) {
$sum=0;
for($i=$a; $i<=$b; $i++){
$sum+=$a;
echo "$a ";
$a++;
}
return $sum;
}
$result=hap(5,10);
echo "<br>$result";
?>
/*
5 6 7 8 9 10
45
*/
'수업내용' 카테고리의 다른 글
OWASP ZAP (2) | 2024.09.11 |
---|---|
php <form태그와 변수값 전달> (6) | 2024.09.03 |
php <조건문 switch, 반복문> (0) | 2024.08.29 |
php <문자열 출력 echo, 연산자, 변수, 조건문 if> (6) | 2024.08.28 |
<WIN2022 + PHP + SQL Server> 웹 데이터베이스 연동 (0) | 2024.08.28 |