php array에서 array값 변경 질문

php array에서 array값 변경 질문

QA

php array에서 array값 변경 질문

본문

안녕하세요

기숙사, 차량유지비, 교육비 지원, 자녀 학자금 지원, 주택자금 지원, 직원대출 제도, 모성보호시설 등으로 구성되어있는 항목들이 있습니다.

해당 항목을 DB에 배열로 저장하여, 글쓸때 체크박스로 선택하면 배열로 들어가 저장하는 식으로 했는데,

향후를 생각하면 DB용량 부분에 문제가 있을것 같아서 저장 값을 기숙사면 1, 차량유지비면 2, 교육비 지원이면 3 이런식으로 DB에 저장하도록 했습니다. 물론 배열

 

예시)

기존

[차량유지비, 교육비 지원, 주택자금 지원]

변경

[2, 3, 5]

 

문제는 글 읽는 단계에서 php로 배열을 불러오면 해당 값에 맞는 차량유지비, 교육비 지원, 주택자금 지원 등 해당 값에 맞는 값으로 변경하여 출력이 이뤄져야하는데 array_flip, array_replace 등 함수를 이용해봤지만 어떻게 해야할지 도무지 감이 안잡혀서 질문드립니다.

 

어떻게 해야 좋을지 자문구합니다.

 

이 질문에 댓글 쓰기 :

답변 3


<?php
function values_from_key($values, $keys) {
  $arr = array_intersect_key($values, array_flip($keys));
  $arr = array_replace(array_flip($keys), $arr);
  $arr = array_values($arr);
 
  return $arr;
}
 
$arr_sample = [
  '1' => '기숙사',
  '2' => '차량유지비',
  '3' => '교육비 지원',
  '4' => '식대비',
  '5' => '주택자금 지원',
];
 
$arr_db = [2, 3, 5];
print_r(values_from_key($arr_sample, $arr_db));
/*
Array
(
    [0] => 차량유지비
    [1] => 교육비 지원
    [2] => 주택자금 지원
)
*/
 
$arr_db = [4, 1];
print_r(values_from_key($arr_sample, $arr_db));
/*
Array
(
    [0] => 식대비
    [1] => 기숙사
)
*/
?>

매우 감사드립니다. 궁금한부분이 이렇게 처리해야하는 항목이 꽤 있는데,
DB에 1,2,3이런식으로 기록해서 값길이를 줄이고 php에서 값 이렇게 처리해서 보이는것과
DB에 기숙사, 차량유지비, 교육비지원으로 기록해서 값길이는 숫자에비해 크되 php에서 바로 불러오는것
둘중에 어떤게 서버 부하나 렉(?) 측면에서 어떤게 더 현명한 방법일지 궁금합니다.

값의 저장형태 단축은 그 자체로는 부하를 이야기 하기엔 의미가 없고
네트워크를 통해 데이터를 주고받을때 패킷양의 감소가 그만큼 줄어들어 낫다고 볼수 있어도
데이터가 비정상적으로 비대하지 않은 이상 큰 차이는 없다고 봐야 합니다.

그런부분보다 데이터 유지관리로 관점을 바꿔
별도의 레이블 관리 테이블을 만들어 관리하는 방법이
조금의 비용소모는 있을지라도 데이터 정규화도 되고 관리도 유연해지고
더 나은 선택이 아닌가 싶습니다.

현재처럼 어플리케이션 단에서 값을 처리해 보여주는 부분 역시 기대에 근접할 답변은 드렸으나
소스단에서 하드코딩 형태로 제어되는 임시성의 성격이 짙으므로 추천드리지는 않습니다.

부하나 렉은 적절한 캐싱작업 이나 쿼리 및 코드개선, 어플리케이션 구조변경 등이 도움이 됩니다.

$arr = array(2=>'차량유지비', 3=>'교육비 지원', 5=>'주택자금 지원');

이렇게 선언을 해주고..

출력하는 화면에서..

echo $arr[$key];

하면 해당  $key 값에 따라서 출력이 됩니다.

 

배열 값으로 키 값을 찾으려는 거 아닌가요?

 


function getKeyByValue($array, $search_value) {
    foreach ($array as $key => $value) {
        if ($value == $search_value) {
            return $key;
        }
    }
    return null;
}
$array = array(
    "apple" => "red",
    "banana" => "yellow",
    "grape" => "purple"
);
$search_value = "yellow";
$result = getKeyByValue($array, $search_value);
if ($result !== null) {
    echo "키: " . $result . "\n";
} else {
    echo "값을 찾을 수 없습니다.\n";
}
답변을 작성하시기 전에 로그인 해주세요.
전체 129,102 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT