php 배열과 함수
2022. 2. 4. 12:21ㆍStudy/PHP&MySQL
배열
<?
//배열이용 합계, 평균구하기, 배열의 원소는 0부터 시작한다.
$score[0]=78;
$score[1]=83;
$score[2]=97;
$score[3]=88;
$score[4]=78;
$sum = 0;
for($a=0; $a<=4; $a++){
$sum = $sum + $score[$a];
}
$avg = $sum/5;
echo("과목 점수 : $score[0], $score[1], $score[2], $score[3], $score[4]<br>");
echo("합계 : $sum, 평균 : $avg <br>");
/*
과목 점수 : 78, 83, 97, 88, 78
합계 : 424, 평균 : 84.8
*/
?>
array()
<?
// 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);
$sum=0;
for($a=0; $a<20; $a++) {
$sum = $sum + $eng_score[$a]; // 20명의 학생의 성적의 누적 합
}
$avg = $sum/20; // 평균 구하기
echo "학생들 영어 점수 : ";
for($a=0; $a<20; $a++) // 입력된 학생들의 영어 성적 출력
echo $eng_score[$a]." ";
echo "<br>"; // 줄 바꿈
echo("합계 : $sum, 평균 : $avg");
/*
학생들 영어 점수 : 87 76 98 87 87 93 79 85 88 63 74 84 93 89 63 99 81 70 80 95
합계 : 1671, 평균 : 83.55
*/
?>
2차원배열 == 행열 ($배열명[행],[열])
<?
// 2차원 배열을 이용한 3명의 학생에 대한 4과목 합계와 평균
//$score = array( array(88, 98, 96, 77, 63), array(86, 77, 66, 86, 93), array(74, 83, 95, 86, 97) );
$score = [ [88, 98, 96, 77, 63], [86, 77, 66, 86, 93], [74, 83, 95, 86, 97] ] ;
// 입력된 성적과 배열 인덱스 출력
for ($i=0; $i<3; $i++){
for ($j=0; $j<5; $j++)
echo "\$score[$i][$j] = ".$score[$i][$j]."<br>";
echo "<br>";
}
// 3명에 대한 과목의 합계와 평균
for($i=0; $i<3; $i++){
$sum=0;
for($j=0; $j<5; $j++)
$sum = $sum + $score[$i][$j];
$avg = $sum/5;
$student_num = $i + 1;
echo("$student_num 번째 학생의 점수 => 합계 : $sum,
평균 : $avg <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
1 번째 학생의 점수 => 합계 : 422, 평균 : 84.4
2 번째 학생의 점수 => 합계 : 408, 평균 : 81.6
3 번째 학생의 점수 => 합계 : 435, 평균 : 87
*/
?>
문자열 관련 내장함수
strlen() substr() explode()
strlen() | 문자열의 길이를 계산 | index번호는 0부터 시작 |
substr() | 문자열을 인덱스값으로 자름 | substr(문자열, 0, 3) index번호 0부터 3개를 가져 온다. |
explode() | 특정 문자를 기준으로 문자열을 분리 | explode("-", 문자열) -을 기준으로 문자열을 분리하여 배열로 저장 |
<?
$tel = "010-2777-3333";
$mail = "green22@naver.com";
// 문자열의 길이 계산
$num_tel = strlen($tel);
echo "strlen() 함수 사용 : $num_tel<br>";
// 문자열을 index값으로 자름
$tel1 = substr($tel, 0, 3); // 앞에서 세 문자를 가져옴
$tel2 = substr($tel, 4, 4); // 네 번째 문자에서 네 개를 가져옴
$tel3 = substr($tel, 9, 4); // 아홉 번째 문자에서 네 개를 가져옴
echo "substr() 함수 사용 : $tel1 $tel2 $tel3<br>";
// 하이픈(-)을 기준으로 문자열 분리
$phone = explode("-", $tel);
echo "explode() 함수 사용 : $phone[0] $phone[1] $phone[2]<br>";
$email = explode("@", $mail);
echo "explode() 함수 사용 : $email[0] $email[1]";
?>
사용자 정의 함수
기본함수
<?
function aaa() {
echo ("안녕하세요!");
}
aaa();
?>
매개변수
<?
function plus($a, $b){
$c = $a + $b;
echo $c;
}
plus(15, 25);
echo "<br>";
plus(3500, 1500);
?>
매개변수+리턴값
<?
function plus($a, $b){
$c = $a + $b;
return $c;
}
$result = plus(15, 25);
echo $result."<br>";
$result = plus(3500, 1500);
echo $result;
?>
전역변수 global 변수명; , $GLOBALS["변수"]
지역변수와 전역변수
보안상의 이슈로 php 전역변수는 함수 내부에서 사용될수 없다.
- global 변수명; 을 이용하여 함수 내부에서 전역변수를 인식시켜 사용하거나
- $GLOBALS["변수명"]; 을 사용하여 함수 내부에서 전역변수를 사용한다.
<?
$c=0;
function plus($a, $b){
//global $c;
//$c= $a + $b;
$GLOBALS["c"]=$a + $b;
}
function plusR(){
// global $c;
// echo $c;
echo $GLOBALS["c"];
}
plus(100,100);
plusR();
?>
정적변수 (카운터 만들기) static 변수명;
정적변수는 지역변수이며 초기값을 지정한다.
- 정적변수는 지역변수다.
- 정적변수의 초기화는 최초 1회만 적용된다.
- 정적변수는 함수의 계산이 완료되어도 변수가 자동 삭제되지 않는다.
<?
function counter() {
static $num = 1; // 정적변수
echo $num.'<br>';
$num++;
}
for($i=1; $i<11 ; $i++){
counter();
}
?>
*정적변수, 자동변수
컴퓨터 프로그래밍에서 정적 변수는 정적으로 할당되는 변수이며, 프로그램 실행 전반에 걸쳐 변수의 수명이 유지된다. 기억 장소가 콜 스택에서 할당 및 할당 해제되는, 수명이 더 짧은 자동 변수와는 반대되는 개념이다. 즉, 기억 장소가 힙 메모리에 동적 할당되는 객체와 반의어이다.
사용자 정의 함수
1부터 100까지의 합
<?
// hap($a, $b) 함수는 $a에서 $b 까지의 합을 구한다.
function hap($a, $b){
$sum=0;
while($a <= $b){
$sum=$sum+$a;
$a++;
}
return $sum;
}
$from = 1;
$to = 100;
$total = hap($from, $to);
echo("$from 에서 $to 까지의 합 : $total");
?>
공원 입장표 출력
<?
function cal_fee1($day, $age) // 일반 입장권 요금 구하기
{
if ( $day == "주간" )
{
if ($age> 12 && $age < 65)
$money = 26000;
else
$money = 19000;
}
else
{
if ($age> 12 && $age < 65)
$money = 21000;
else
$money = 16000;
}
return $money;
}
function cal_fee2($day, $age) // 자유이용권 요금 구하기
{
if ( $day == "주간" )
{
if ($age> 12 && $age < 65)
$money = 33000;
else
$money = 24000;
}
else
{
if ($age> 12 && $age < 65)
$money = 28000;
else
$money = 21000;
}
return $money;
}
function cal_fee3($age) // 2일 자유이용권 요금 구하기
{
if ($age> 12 && $age < 65)
$money = 55000;
else
$money = 40000;
return $money;
}
function cal_fee4($age) // 콤비권 요금 구하기
{
if ($age> 12 && $age < 65)
$money = 54000;
else
$money = 40000;
return $money;
}
// $category가 1=> 입장권, 2=> 자유이용권, 3=> 2일 자유이용권, 4=> 콤비권 의미
$category = 1; // 입장권 요금을 구하고자 함
$age = 13;
$day = "야간";
if( $category == 1 )
$fee = cal_fee1($day, $age);
elseif ( $category == 2 )
$fee = cal_fee2($day, $age);
elseif ( $category == 3 )
$fee = cal_fee3($age);
else
$fee = cal_fee4($age);
if( $category == 1 )
$cat = "일반 입장권";
elseif ( $category == 2 )
$cat = "자유이용권";
elseif ( $category == 3 )
$cat = "2일 자유이용권";
else
$cat = "콤비권";
echo "구분 : $cat<br>";
if ($category == 1 || $category==2)
echo "때 : $day<br>";
echo "나이 : $age 세<br>";
echo "입장료 : $fee 원";
?>
[놀이공원 요금표]
일반입장권 : 주간 (대인 26,000원) (소인 및 노인 19,000원)
야간 (대인 21,000원) (소인 및 노인 16,000원)
자유이용권 : 주간 (대인 33,000원) (소인 및 노인 24,000원)
야간 (대인 28,000원) (소인 및 노인 21,000원)
2일 자유이용권 (대인 55,000원) (소인 및 노인 40,000원)
콤비권 (대인 54,000원) (소인 및 노인 40,000원)
* 소인은 12세 이하/노인은 65세 이상
'Study > PHP&MySQL' 카테고리의 다른 글
get / post (0) | 2022.02.08 |
---|---|
form 유효성 검사 (0) | 2022.02.07 |
php 기본문법 (0) | 2022.02.04 |
XAMPP MySQL 새로운 계정 생성하기 (0) | 2022.02.03 |
[PHP] 특정 IP 에서만 노출 (0) | 2021.03.10 |