관리 메뉴

java,javascript,android,php,sql,공부용,메모용

php count (php에서의 length), 소수점 처리하기 round 합계 평균 1차배열, 2차배열, key value로 지정 본문

개발/php

php count (php에서의 length), 소수점 처리하기 round 합계 평균 1차배열, 2차배열, key value로 지정

yy_dd2 2021. 4. 13. 19:05
반응형

1차원배열 이용해서

- 배열만들고

- 값적고

- 값 합계와 평균 계산

    <?php 
        // 점수의 합계와 평균 계산 (열 명)
        $score = array(87, 76, 98, 87, 93, 79, 85, 88, 63);
        $sum = 0;
        // php에서는 데이터를 전부 출력하고 싶은데, 데이터가 많을 경우에 배열 개수를 직접 확인하는 것은 어려울때, 
        // count() 함수와 for문을 사용해 처리할 수 있음
        for($i=0; $i < count($score); $i++){
            $sum = $sum + $score[$i];
        }
        $avg = $sum / count($score);

        echo "입력된 점수 : ";
        for($i=0; $i < count($score); $i++){
            echo $score[$i].", ";
        }

        echo "<br>";
        echo "합계 : $sum , 평균 : $avg";

        echo "<br>
                1차원배열 이용하기 끝
              <br><hr><br>
                2차원배열 이용하기 / 점수 합계 평균 계산<br>
                - 교양과목 : 영어회화, 이미지 메이킹, 미술 감상, 디지털 사진, 디자인과 문화<br>
                - 학생 : 김수영, 정수정, 장동헌, 이미지, ///너무많아서 4명만 최성훈, 김수진, 염동진, 강진성, 황소정, 한채린<br>
                - 점수는 임의로 설정<br>"
    ?>

 

2차원배열 이용하기 / 점수 합계 평균 계산
- 교양과목 : 영어회화, 이미지 메이킹, 미술 감상, 디지털 사진, 디자인과 문화
- 학생 : 김수영, 정수정, 장동헌, 이미지, ///너무많아서 4명만 최성훈, 김수진, 염동진, 강진성, 황소정, 한채린
- 점수는 임의로 설정

 

직접 풀어서 퀴즈에 쓸뎅벗는 테스트와 내용이 많음

<?php 
        $age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
        foreach($age as $x=>$x_value)
        {
        echo "Key=" . $x . ", Value=" . $x_value;
        echo "테스트<br>";
        }
        $score = array( array("김수영",90,88,54,67,87), array("정수정",96,58,47,38,69), 
                        array("장동헌",86,67,78,56,83), array("이미지",95,86,73,86,81) );

        // echo "<br><br>테스트<br>".
        //      "* 이름 ".$score[0][0]."<br>".
        //      "* 과목<br>".
        //      "영어회화 : ".$score[0][1].
        //      "<br>  이미지 메이킹 : ".$score[0][2].
        //      "<br>  미술 감상 : ".$score[0][3].
        //      "<br>  디지털 사진 : ".$score[0][4].
        //      "<br>  디자인과 문화 : ".$score[0][5]."<br>";
        // echo "count($ score) : ".count($score)."<br>";

        echo"<table border='0' width='800'>".
                "<tr bgcolor='#ccccc' align='center'>".
                    "<th>이름</th>".
                    "<th>영어회화</th>".
                    "<th>이미지 메이킹</th>".
                    "<th>미술 감상</th>".
                    "<th>디지털 사진</th>".
                    "<th>디자인과 문화</th>".
                    "<th>합계</th>".
                    "<th>평균</th>".
                "</tr>";
        // 소수점 확인
        //$testnum = 12.345;

        //echo floor($testnum);
        // 12를 출력함. 소수점 버림

        //echo ceil($testnum)
        // 13을 출력함. 소수점 올림

        //echo round($testnum)
        // 12를 출력. 반올림 적용하여 출력
        
        // round() 함수를 사용 원하는 자리수만큼만 소수점으로 출력하는 방법
        // $testnum = 12.3456;

        // echo round($testnum, 2);
        // // 12.35를 출력함. 소수점 두자리까지 반올림하여 처리
        
        // echo round($testnun, 3);
        // // 12.345를 출력함
        for($i=0; $i < count($score); $i++){
            
            echo "<tr align='center'>";

            $sum = 0;

            for($j=0; $j < 1; $j++ ){
                echo "<td>{$score[$i][$j]}</td>";
            }
            for($j=1; $j < count($score[$i]); $j++ ){
                $sum = $sum + $score[$i][$j];
                // round 적용
                $avg = round( $sum/count($score[$i]),2 );
                echo "<td>{$score[$i][$j]}</td>";

            }
            echo "<td>$sum</td>";
            echo "<td>$avg</td>";
            echo "</tr>";

        }


        echo "</tr>";


        echo "</table>";
        

    ?>

 

 

배열을 지정할때 key value로 지정해서 불러올수있음

<?php
	$age=array("Peter"=>"35","Ben"=>"37","Joe"=>"43");
        foreach($age as $x=>$x_value){
          echo "Key=" . $x . ", Value=" . $x_value;
          echo "테스트<br>";
        }
?>

 

소수점 처리하기

floor, ceil, round 

        // 소수점 확인
        $testnum = 12.345;

        echo floor($testnum);
        // 12를 출력함. 소수점 버림

        echo ceil($testnum)
        // 13을 출력함. 소수점 올림

        echo round($testnum)
        // 12를 출력. 반올림 적용하여 출력
        
        // round() 함수를 사용 원하는 자리수만큼만 소수점으로 출력하는 방법
         $testnum = 12.3456;

         echo round($testnum, 2);
        // 12.35를 출력함. 소수점 두자리까지 반올림하여 처리
        
         echo round($testnun, 3);
        // 12.345를 출력함

 

 

표로 나타낸거중에

 

for문안에 j 변수 for문이 두개 들어간 이유는

$score[$i][0]의 모든 0번째가 문자열로 되어있어서

따로 나타나지 않으면 $sum에서 

Warning: A non-numeric value encountered in T:\AutoSet10\public_html\php_web\chapter4.php on line 98

이런 오류를 보여준다 문자열이 들어있다고해서 따로 출력해줬더니 해결됐다

 

        for($i=0; $i < count($score); $i++){
            
            echo "<tr align='center'>";

            $sum = 0;

            for($j=0; $j < 1; $j++ ){
                echo "<td>{$score[$i][$j]}</td>";
            }
            for($j=1; $j < count($score[$i]); $j++ ){
                $sum = $sum + $score[$i][$j];
                // round 적용
                $avg = round( $sum/count($score[$i]),2 );
                echo "<td>{$score[$i][$j]}</td>";

            }
            echo "<td>$sum</td>";
            echo "<td>$avg</td>";
            echo "</tr>";

        }

2차원배열이나 코딩작성을 조금 더 해보려고 간단한거부터 작성해봤는데

책에서는 count나 round 같은건 다루지 않고 그냥 변수갯수별로 알려줘서 퀴즈풀어본건 도움이 많이되는듯함

반응형
Comments