PHP 웹 페이지 만들기

[PHP] 함수, 지역변수, 전역변수

조밈밍 2022. 10. 19. 17:50
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>function</h1>
    <pre>
        복잡한 일의 반복을 피하기 위해 함수 사용 
        function 함수이름(매개변수1, 매개변수2){
            ...실행문...
        }
        함수이름(); 
    </pre> 
    <?php
        function sum($x, $y){
            $result = $x + $y;  // 지역변수 local variable
            return $result;
        }
        $result = sum(10,20);   // 전역변수 gloval variable
        echo $result;
    ?>

    <h2>배열 값 출력하기</h2>
    <?php
        $fruits = [
            'apple',
            'mango',
            'banana',
            'orange'
        ];
        // echo '<pre>';
        // print_r($fruits);
        // echo '</pre>';

        function output($value){
            echo '<pre>';
            print_r($value);
            echo '</pre>';
        }
        output($fruits);
    ?>

    <h2>지역변수 vs 전역변수</h2>
    <?php
        function myfunc(){
            $var = 10;      // 지역변수로써, 함수 외부에서 출력X
            echo "{$var}"; 
        }
        myfunc();
    ?>
    <hr>
    <?php
        $var2 = 20;
        function myfunc2(){
            // echo $var2; 에러
            global $var2;   // 전역변수로 바뀜
            echo "{$var2}<br>";
            echo "{$GLOBALS['var2']}";  // 전역변수는 GLOBALS 배열안에 저장됨
                                        // 변수명이 인덱스 역할을 한다
        }
        myfunc2();
    ?>

    <h2>정적 변수</h2>
    <!-- 함수가 종료 되면 지역변수는 사라진다
         정적 변수는 함수가 종료되더라도 메모리상에서 사라지지 않는다 -->
    <?php
        function increment(){
            static $count = 0;  // 정적 변수
            // $count = 0; <- 지역 변수, 함수 종료시 사라짐, 함수 여러번 실행해도 값 모두 0
            echo "{$count}<br>";
            $count++;
        }
        increment();
        increment();
        increment();
    ?>
</body>
</html>