ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 배열(Array) - ASP, JSP, PHP 비교
    Java/JSP/Servlet 2008. 8. 25. 17:24
    반응형

    1. 배열이란 무엇이냐?


       배열은 여러가지의 데이타를 하나의 변수로 접근 할 수 있게끔 만들어 놓은 귀찮음의 산물입니다. 즉, 아주 유용하게 쓰인다는 거죠.


    2. 각각의 언어마다 배열의 특징


       [php]

            php에서 배열은 모든 것을 담을 수 있는 상자와 같습니다.

            기본 자료형 모두 담을 수 있고 Object형이나 Resource 형도 담을 수 있습니다.

            그리고 사용하기가 너무나도 쉬워요.


            $a = array(10,20,30,40);

            $a['abc'] = 10;

            $a = array('abc' => 10);


            등과 같이 array 함수를 쓰던가 아님 직접 인덱스를 이용해서 배열에 데이타를 넣어도 됩니다.


            php는 형변환(casting)이 많이 자유로운 관계로 $a['abc'] = 10; 으로 코딩을 하면 자동으로 $a 라는 변수는 배열로 인식을

            합니다. 연관배열을 이토록 쉽게 사용할 수 있으니. 정말 편하죠..


        [asp]

            asp에서는 연관배열은 지원되지 않고 단순히 숫자 인덱스만 지원이 됩니다.

           

            dim Arr(5)


            Arr(0) = "1번"

            Arr(1) = "1번"

            Arr(2) = "1번"

            Arr(3) = "1번"

            Arr(4) = "1번"

            Arr(5) = "1번"

            위와 같이 선언할때 개수를 적어주고 0부터 인덱스로 사용할 수 있습니다.


            arr = Array(1, 2, 3, 4, 5)


            이렇게 배열을 생성해도 됩니다.


            asp에서도 Scripting.Dictionary 개체로 연관 배열을 형태로 쓸 수 있지만 기본적으로 언어차원에서 지원되지 않으므로

            생략하겠습니다.


       [jsp]


            자바에서는 배열은 타입별로 밖에 지원이 되지 않습니다.


           int a[] = new int[4];

          

            위와 같은 형태로 타입별로 배열을 생성을 합니다. 즉, 이 배열에는 int 형 밖에 담을 수가 없죠..


            자바에서도 기본적으로 연관 배열은 지원되지 않습니다. 다만 jvm을 기반으로 하는 groovy라는 자바용 스크립트 언어가 있는데

            이 언어는 아주 유연해서 연관배열 도 지원이 되긴 합니다.


            자바에서 연관 배열을 쓸려면 HashTable, HashMap 같은 클래스를 써야 하기 때문에.. jsp에서도 연관배열 쪽은 다루지 않겠습

            니다.


    3. 배열관련 제어문

        

        배열로 루프(Loop) 돌기


           [php]

               $arr = array(1,2,3,4,5);


               // for 문 이용하기

              for($i = 0; $i < sizeof($arr); $i++) {

                    echo "arr[$i]=>".$arr[$i];

              }


              // foreach 문 이용하기

               foreach ($arr as $key => $value) {

                    echo "arr[$key]=>$value\n";

               }          


           [asp]

               arr = Array(1, 2, 3, 4, 5)


              'for 문 이용하기

              for i = 0 to UBound(arr)

                  Response.Write "arr[" & i & "] => " & arr(i)

              next


               ' foreach 문 이용하기

               i = 0

               for each  data  in arr

                  Response.Write "arr[" & i & "] => " & data

                  i = i + 1

               next


           [jsp]

                int arr[] = new int[4] {1, 2, 3, 4};


                // for문 이용하기

               for (int i = 0; i < a.length; i++) {

                    System.out.println("arr[" + i + "] = > " + arr[i]);

               }


               * 자바는 배열에 length라는 속성을 제공해 현재 배열 길이를 알아 낼 수 있습니다.


               // for in 문 이용하기 (java 1.5  이상만 가능합니다.)

               int i = 0;

               for (int data in arr) {

                    System.out.println("arr[" + i + "] = > " + data);

                    i++;

               }


    4. 이중 배열 사용하기

        

       실제 현업에서 이중배열은 아주 아주 많이 사용이 됩니다. 가끔 배열 하나로 끝낼수도 있지만 이중 배열을 사용하면 훨씬 쉬워지는

       방법이 많이 있습니다.


        [php]

             php에서 이중 배열은 1차원 배열에서 각 배열요소에 다시 배열요소를 넣는 것과 같습니다. 예를 보겠습니다.


             $arr = array( array(1,2,3), array(4,5,6));

            

             위와 같이 선언 했을 때


             echo $arr[0][2];   // 결과는 3 입니다.


             위와 같이 사용 할 수 있습니다. 간단하죠..


             $arr[0][2] = 3; 

             이렇게 해서 사용해도 됩니다. 여러분의 취향따라...

             연관배열을 사용해서 할때는


             $arr = array('aaa' => array('aaa' => 'bbb'));


             echo $arr['aaa']['aaa'];  // 결과는 bbb가 출력이 됩니다.


             위와 같이 사용하셔도 됩니다.


             이젠 막 섞어서 써보죠.. ㅋ

            

             $arr = array('aaa' => array('bbb','ccc'), 0=> array('arr' => 'bbb'));


             echo $arr['aaa'][1]; // 결과는 ccc 출력

             echo $arr[0]['arr'];  // 결과는 bbb 출력


             위와 같이 숫자 인덱스와 연관배열을 동시에 사용 가능합니다. 

        

        [asp]

            

             asp에서 이중 배열을 사용할려면 일단은 선언을 해야합니다.


             dim arr(10, 5)


             앞의 숫자는 10은 행의 마지막 인덱스이고 뒤에 5는 열의 마지막 인덱스입니다.


             즉, 인덱스는 항상 0부터 시작을 하므로 11개의 행과 6개의 열을 가지고 있다는 의미가 됩니다.


             사용할때는


              arr(0,0) = 10

              arr(0,1) = 20


              위와 같은 형태로 사용이 가능합니다. 단순하죠.. ^^


        [jsp]


             java 에서도 배열 사용하는 것은 크게 다르지는 않습니다.


             int a[][] = new int[5][5];


             위와 같이 선언을 하는데 다만 asp와 틀린점은 5라고 적힌 숫자는 개수를 의미하지 마지막 인덱스를 의미하지는 않는다는

             것입니다. 즉, 실제로 인덱스로 사용할수 있는 범위는 0 ~ 4까지 입니다.


             a[0][0] = 10;


             과 같은 형태로 대입하여 사용 할 수 있습니다.


    5. 이중배열 루프(Loop) 돌기

           

         [php]

             $arr = array(array(1,2,3), array(4,5,6));


             // for 문 이용하여 루프 돌기

            for ($i = 0; $i < sizeof ($arr); $i++) {

                  for($j = 0; $j < sizeof ($arr[$i]); $j++) {

                        echo $arr[$i][$j];

                  }

            }


            // foreach 문 이용하여 루프 돌기

            foreach ($arr as $arr1) {

                  foreach ($arr1 as $value) {

                       echo $value;

                  }

            }


         [asp]

             dim Arr(1,3)

             arr(0,0) = 1

             arr(0,1) = 2

             arr(0,2) = 3

             arr(1,0) = 4

             arr(1,1) = 5

             arr(1,2) = 6


             // for 문 이용하여 루프 돌기

            for i = 0 to UBound(arr, 1)

                 for j = 0 to UBound(arr, 2)

                       Response.Write arr(i, j)

                 next

            next


            // foreach 문 이용하여 루프 돌기

           for each arr1 in  Arr

               for each value in arr1

                    Response.Write value

               next

            next


         [jsp]

          int[][] arr = new int[2][3] { {1,2,3},{4,5,6} } ;


         // for문 이용

         for (int i = 0; i < arr.length; i++) {

             for (int j = 0; j < arr[i].length; j++) {


             }

         }


    반응형
Designed by Tistory.