[PHP] 관련성이 있는 값을 구분자를 이용하여 배열로 변환하기

이번 포스팅은 제목을 쓰는 게 좀 어렵다. 구분자로 구분된 텍스트를 배열로 저장하는 것인데 예를 들어 설명하는 게 제일 좋을 것 같다. 우선 아래의 값을 보도록 하자.

모니터-22인치
모니터-23인치
모니터-27인치
키보드-일반키보드
키보드-기계식키보드

이 값들을 모니터 => 22인치, 23인치, 27인치 / 키보드 => 일반키보드, 기계식키보드 이런 식으로 구분을 해서 저장을 해야할 필요가 있는데 이 때 배열을 사용하면 편하게 접근할 수 있다.

우선 가정해야할 것이 위 값은 DB의 field 라는 필드에 저장되어 있는 값으로 쿼리를 이용해 가져오는 것이다.

<?php
$val_array = array();
for($i=0; $row=mysql_fetch_array($result); $i++) {
    $val = explode('-', $row['field']);

    if($val[0] && !array_key_exists($val[0], $val_array))
        $val_array[$val[0]] = array();

    if($val[1] && !in_array($val[1], $val_array[$val[0]]))
        $val_array[$val[0]][] = $val[1];
}
?>

위 코드의 기능을 설명하면 우선 모니터와 키보드는 배열의 키로 사용된다. 그래서 $val_array 배열에 해당 키 값이 존재하지 않으면 해당 값을 키로 하는 배열을 선언하고 그 배열에 22인치 등의 값을 배열로 저장하는 것이다. 이렇게 배열로 저장해 두면 원래 값이 가졌던 관계를 유지할 수 있기 때문에 여러 가지로 사용될 수 있을 것이다.

덧, 물론 위에서 예로 든 값이 DB에 처음부터 구분되어 저장되어 있다면 이런 과정도 필요없을 것이다. 하지만 하나의 필드에 구분자를 이용해 저장되어 있다면 이 방법은 유용할 것이라 생각한다.

편리

PHP와 MariaDB, jQuery 등을 사용해 게시판, 쇼핑몰 솔루션을 개발합니다. 그누보드5와 영카트5 개발에 참여 했습니다. Linux와 Nginx는 물론 WordPress, Git 등에도 관심이 많습니다. 자전거 타기 및 사진 촬영을 취미로 하고 있습니다.

카카오톡 플러스친구 채팅 : NCUBE.NET

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.