본문 바로가기

스터디/코딩

[ 자율 스터디 ] PHP 배열

배열이란?

- 하나의 변수명에 여러 개의 데이터를 저장할 수 있게 해주는 데이터 형

- $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");
?>

array()함수를 사용해 성적의 합 / 평균 구하는 프로그램

 

 

배열과 반복문

- 배열은 반복문과 함께 사용하는 경우가 많기에 '$배열명[$인덱스_변수]'의 형태로 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단, 6단 구구단 출력 프로그램

 

 

버블 정렬

- 인접한 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>");
  }
?>

2차원 배열을 사용한 3명의 학생들의 5과목 성적의 합 / 평균 프로그램

 

 

[ 연습 문제 ]

 

- 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");
?>

배열을 사용한 학생 10명 점수의 합 / 평균 프로그램

 

- 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>";
	}
?>

배열을 이용하며 10명 학생들의 5과목에 대한 합 / 평균 프로그램

 

- 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>";
	}
?>

2번 문제에서 각각 학생에 대한 정보를 나타내는 프로그램

 

- 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>";
?>

HTML <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