배열이란?
- 하나의 변수명에 여러 개의 데이터를 저장할 수 있게 해주는 데이터 형
- $a[0], $a[1], $a[2] … 와 같이 하나의 배열 변수명으로 여러 개의 데이터를 저장 및 관리 할 수 있다.
배열의 인덱스
- 배열에서 인덱스는 데이터가 저장되는 저장 공간의 주소를 의미
- PHP를 비롯한 대부분의 프로그래밍 언어에서 배열의 인덱스는 0부터 시작한다.
<?php
echo "배열을 실습해보자!!! <br><br>";
$score[0] = 90;
$score[1] = 80;
$score[2] = 85;
$score[3] = 95;
$score[4] = 93;
$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>");
?>

배열의 초기화
- 배열을 초기화하려면 배열의 인덱스를 이용하여 배열의 원소에 값을 직접 입력하거나 array() 함수를 이용한다.
<?php
echo "배열을 실습해보자!!!_array()함수 사용 <br><br>";
$scores = 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 + $scores[$a];
}
$avg = $sum/20;
echo("합계 : $sum, 평균 : $avg");
?>

배열과 반복문
- 배열은 반복문과 함께 사용하는 경우가 많기에 '$배열명[$인덱스_변수]'의 형태로 while문이나 for문 같은 반복문과 함께 사용한다.
<?php
echo "배열을 실습해보자!!!_구구단 출력 <br><br>";
for($i = 0; $i < 8; $i++)
{
$a[$i] = $i + 2;
echo $a[$i]." ";
}
echo "<br>";
for($j = 0; $j < 9; $j++)
{
$b[$j] = $j + 1;
echo $b[$j]." ";
}
echo "<br>---------------<br>";
for($i = 0; $i < 9; $i++)
{
$c = $a[0] * $b[$i];
echo "$a[0] x $b[$i] = $c<br>";
}
echo "---------------<br>";
for($i = 0; $i < 9; $i++)
{
$c = $a[4] * $b[$i];
echo "$a[4] x $b[$i] = $c<br>";
}
echo "---------------<br>";
?>

버블 정렬
- 인접한 2개의 원소를 비교하면서 값을 정렬하는 방식
- 배열을 이용하여 배열의 원소 값을 서로 바꿔가면서 거품이 부풀어오르듯 정렬하기에 버블 정렬이라고함.
( 버블 정렬 : 알고리즘 - 버블 정렬 (Bubble Sort) (tistory.com), [알고리즘] 버블 정렬(Bubble Sort) 알고리즘 쉽게 구현해보기 (C++) — ◆ Slow But Steady ◆ (tistory.com) )
<?php
echo "배열을 실습해보자!!!_오름차순 버블 정렬 <br><br>";
$num = array(15, 13, 9, 7, 6, 12, 19, 30, 28, 26);
$count = 10;
echo "정렬 전 : ";
for ($a=0; $a<10; $a++)
{
echo $num[$a]." ";
}
echo "<br>";
for($i=$count-2; $i>=0; $i--)
{
for($j=0; $j<=$i; $j++)
{
if($num[$j] > $num[$j+1])
{
$tmp = $num[$j];
$num[$j] = $num[$j+1];
$num[$j+1] = $tmp;
}
}
}
echo "버블 정렬(오름차순) 후 : ";
for ($a=0; $a<10; $a++)
{
echo $num[$a]." ";
}
?>

2차원 배열
- 위에서 실습해본것은 다 1차원 배열인데 2차원으로 사용해야하는 경우도 종종있다.
ex) 학생 3명이 받은 5개 과목 성적의 합 / 평균을 구할 때
- 2차원 배열도 1차원 배열과 같이 인덱스는 0부터 시작이다.
<?php
echo "배열을 실습해보자!!!_2차원 배열 <br><br>";
$score = array( array(88, 98, 96, 77, 63),
array(86, 77, 66, 86, 93),
array(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>";
}
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>");
}
?>

[ 연습 문제 ]
- 1번
<?php
echo "연습 문제 1번 <br><br>";
$score = array(87, 76, 98, 87, 87, 93, 79, 85, 88, 63);
$sum = 0;
for($i=0; $i<10; $i++)
{
$sum = $sum + $score[$i];
}
$avg = $sum/10;
echo "입력된 점수 : ";
for($i=0; $i<10; $i++)
{
echo $score[$i]." ";
}
echo "<br>";
echo("합계 : $sum, 평균 : $avg");
?>

- 2번
<?php
echo "연습 문제 2번 <br><br>";
$subject = array("파이썬", "PHP", "자바스크립트", "사진", "영화감상");
$name = array("김**", "이**", "정**", "장**", "황**", "이**", "최**", "함**", "도**", "강**");
$score = array(array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
array(85, 66, 80, 88, 90, 86, 85, 93, 88, 79));
for($i=0; $i<=4; $i++) {
$sum = 0;
for($j=0; $j<=9; $j++)
{
$sum = $sum + $score[$i][$j];
}
$avg = $sum/10;
echo "{$subject[$i]}의 합계 : $sum, 평균 : $avg <br>";
}
?>

- 3번
echo "연습 문제 3번 <br><br>";
$subject = array("파이썬", "PHP", "자바스크립트", "사진", "영화감상");
$name = array("김**", "이**", "정**", "장**", "황**", "이**", "최**", "함**", "도**", "강**");
$score = array(array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
array(80, 79, 90, 89, 100, 87, 85, 83, 96, 99),
array(70, 88, 70, 85, 60, 95, 77, 89, 82, 93),
array(85, 66, 80, 88, 90, 86, 85, 93, 88, 79));
for($i=0; $i<=9; $i++)
{
$sum = 0;
for($j=0; $j<=4; $j++)
{
$sum = $sum + $score[$j][$i];
}
$avg = $sum/5;
echo "{$name[$i]} 학생의 합계 : $sum, 평균 : $avg <br>";
}
?>

- 4번
<?php
echo "연습 문제 4번 <br><br>";
echo "<table border=1>";
echo "<tr align=center>";
echo "<th width=100>2단</th>";
echo "<th width=100>3단</th>";
echo "<th width=100>4단</th>";
echo "<th width=100>5단</th>";
echo "<th width=100>6단</th>";
echo "<th width=100>7단</th>";
echo "<th width=100>8단</th>";
echo "<th width=100>9단</th>";
echo "</tr>";
for($i=0; $i<=9; $i++)
{
for($j=0; $j<=9; $j++)
{
$result[$i][$j] = ($i+2) * ($j+1);
}
}
for($j=0; $j<=8; $j++)
{
echo "<tr align=center>";
for($i=0; $i<=7; $i++)
{
$a = $i + 2;
$b = $j + 1;
$c = $result[$i][$j];
echo "<td>$a x $b = $c</td>";
}
echo "</tr>";
}
echo "</table>";
?>

'스터디 > 코딩' 카테고리의 다른 글
| [ 자율 스터디 ] 폼과 PHP (0) | 2023.01.05 |
|---|---|
| [ 자율 스터디 ] PHP 함수 (0) | 2023.01.04 |
| [ 자율 스터디 ] PHP 반복문 (0) | 2023.01.03 |
| [ 자율 스터디 ] PHP 조건문 (0) | 2023.01.03 |
| [ 자율 스터디 ] PHP 기초 문법 (0) | 2023.01.02 |