본문 바로가기

제대로알자, SW/웹 프로그래밍

웹프로그래밍 입문(6) PHP 배열 활용 기법


오늘은 PHP 공부 6번째 시간으로, C언어 보다 강력한 배열에 대해 따로 공부를 해보도록 하겠다.

PHP는 배열을 통해 빠른 속도로 데이터 접근 및 처리할 수 있도록 다양한 방법론을 제공한다.

간략하게 PHP에서의 배열 사용법에 대해 정리 해 보자.


1. 연관 배열

- map과 같은 형태로 index혹은 key로 값을 참조할 수 있도록 지원한다.

- 연관 배열 사용 예

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    $html['title'= "My web page";
    $html['body'= "... body of web page ...";         
 
 
    echo $html['title'] . "<br>";
    echo $html['body'] . "<br><br>";
 
    $p2 = array'copier' => "Copier & Multipurpose",
                    'inkjet' => "Inkjet Printer",
                    'laser' => "Laser Printer",
                    'photo' => "Photographic Paper");
 
    echo "p2 element: " . $p2['inkjet']. "<br>";
 
?>
cs


- 실행 결과



2. foreach ... as 루프

- 배열을 위한 특별한 반복문. 배열 아이템 개수를 알 필요 없이 처음부터 마지막 아이템까지 탐색할 수 있다.

- foreach ... as 사용 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
    echo "[Example1]<br>";
    $paper = array("Copier""Inkjet""Laser""Photo");
    $j = 0;
        
    foreach($paper as $item){
        echo "$j : $item<br>";
        ++$j;
    }
    echo "<br>[Example2]<br>";
        
    $product = array('copier' => "Copier & Multipurpose",
                    'inkjet' => "Inkjet Printer",
                    'laser' => "Laser Printer",
                    'photo' => "Photographic Paper");
    foreach($product as $item => $description)
    {
        echo "$item: $description<br>";
    }    
?>
cs


- 실행 결과


3. 다차원 배열

- 하나의 배열이 다른 배열을 일부분처럼 포함하고, 이것을 계속 반복하면서 다차원 배열을 정의할 수 있다.

- 다차원 연관 배열 생성의 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
    $products = array(
        'paper' => array(
                'copier' => "Copier & Multipurpose",
                'inkjet' => "Inkjet Printer",
                'laser' => "Laser Printer",
                'photo' => "Photographic Paper"),
                
        'pens' => array (
                'ball' => "Ball Point",
                'hilite' => "Highlighters",
                'marker' => "Markers"),
                
        'misc' => array(
                'tape' => "Sticky Tape",
                'glue' => "Adhesives",
                'clips' => "Paperclips")             
        );
    echo "<pre>";
    foreach($products as $section => $items)
    {
        foreach($items as $key => $value)
        {
            echo "$section: \t$key\t($value)<br>";
        }
    }
    echo "</pre>"
?> 
cs

- 실행 결과


4. 배열 함수

1) is_array

- 어떤 변수가 배열인지 확인이 필요할 경우 사용할 수 있는 함수.

1
2
3
4
<?php
    $sample = array(1,2,3,4,5);
    echo is_array($sample) ? "Is an array" : "Is NOT an array";
?>
cs


2) count

- 배열의 원소 개수를 반환하는 함수.

1
2
3
4
5
6
7
8
9
10
11
<?php
    $sample1 = array(1,2,3,4,5);
    echo count($sample1) . "<br>";
    $sample2 = array(
            array(123),
            array(456),
            array(789)
    );
    echo count($sample20) . "<br>";
    echo count($sample21) . "<br>";
?> 
cs


3) sort

- 정렬된 원소를 포함하는 새로운 배열을 반환하지 않고 원본 배열을 직접 수정한다.

- sort 사용 예제

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
    $sample = array(5,2,3,1,4);
    foreach($sample as $value)
    {
        echo "$value ";
    }
    echo "<br>";
    sort($sample, SORT_NUMERIC);
    echo "<br>[After Sort]<br>";
    foreach($sample as $value)
    {
        echo "$value ";
    }
    echo "<br>";
    rsort($sample, SORT_NUMERIC);
    echo "<br>[After r-sort]<br>";
    foreach($sample as $value)
    {
        echo "$value ";
    }
?>
cs


- 실행 결과


4) shuffle

- 배열의 원소를 무작위로 섞어 놓는다.

1
2
3
4
<?php
    $sample = array(12345);
    shuffle($sample);
?> 
cs


5) explode

- 문자열을 특정 기준에 따라 단어 단위로 배열에 저장해 주는 함수

- explode 사용 예제

1
2
3
4
5
6
7
<?php
    $sample = explode('***'"A***sentence***with***asterisks");
    print_r($sample);
    echo "<br>";
    $sample2 = explode(' '"This is a sentence with seven words");
    print_r($sample2);
?>
cs

- 실행 결과


6) extract

- 연관 배열의 key값에 해당하는 변수를 생성하여 값을 저장해 주는 함수.

- extract 사용 예제

1
2
3
4
5
6
7
8
9
10
11
<?php
    $sample = array(
        'fname'=>"Doctor",
        'sname'=>"Who",
        'planet'=>"Gallifrey",
        'system'=>"Gridlock"
    );
    extract($sample, EXTR_PREFIX_ALL, 'extract');
       
    echo $extract_planet;
?> 
cs

- 실행 결과


7) compact

- extract의 반대 역할을 한다.

- compact 사용 예제

1
2
3
4
5
6
7
8
<?php
    $fname = "Doctor";
    $sname = "Who";
    $planet = "Gallifrey";
    $system = "Gridlock";
    $contact = compact('fname''sname''planet''system');
    print_r($contact);
?> 
cs

- 실행 결과


이상으로 PHP의 배열에 대한 정리를 마무리 하겠다.