배열의 키값을 다른 배열로 대체하는 쉬운방법이 있을까요
본문
$array1 = array(
"0"=> array(
"a1" => "x21",
"a2" => "z3z",
"a3" => "r4r",
"a4" => "p21"
),
"1"=> array(
"a1" => "x2x",
"a2" => "zz3",
"a3" => "rr1",
"a4" => "p3p"
)
);
$array2 = array(
"gga",
"ggb",
"ggc",
"ggd"
);
배열 1과 배열 2가 있습니다.
배열 1은 2차원 배열이고
배열2는 배열 1의 키의 갯수와 동일한 갯수의 1차원 배열입니다.
여기서 배열 1의 키를 배열 2의 값으로 대체하면
$array1 = array(
"0"=> array(
"gga" => "x21",
"ggb" => "z3z",
"ggc" => "r4r",
"ggd" => "p21"
),
"1"=> array(
"gga" => "x2x",
"ggb" => "zz3",
"ggc" => "rr1",
"ggd" => "p3p"
)
);
이런식으로 되죠..
이걸 반복문을 써서
하나 하나 바꿨는데요..
배열이 많아지면 한참 걸리더라구요
db테이블에서 여러행을 쿼리후에
칼럼이름을 다른 배열의 값으로 대체하는 것과 같은 동작이 되겠네요.
- 테이블의 칼럼 수는 300개 라인은 6만 라인 정도 됩니다.
- db 에서 사용할 수 없는 문자열이 포함된 경우라서 쿼리후에 키를 바꾸려고 합니다.
이걸 좀 더 쉽게? 빠르게? 하는 방법이 있을까 해서 문의 드립니다.
연휴 잘 보내세요..
감사합니다.
답변 3
1. 셀렉트시 as를 이용해 필드명을 바꾸는게 제일이긴 합니다만
2. 꼭 키를 변경 할 필요가 있나요? 키값의 경우 필요한 경우에만 변경하거나 찾아서 사용하면 될 듯한데.
=> 만들고자 하는 기능을 다시 한 번 살펴보시고 다른 방법 찾기를 권장드립니다.
3. 필요할때 아래 같은 함수로 접근시키기.(업데이트가 아닌 값만 찾아오기)
function tmp_key_val($key_array, $val_array, $search_key) {
$key = array_search($search_key, $key_array);
$var = $key_array[$var];
$result = $val_array[$var];
return $result;
}
echo tmp_key_val($array2, $array1[0], 'gga');
4. 내장함수로 배열 만들기
$array3[0] = array_combine($array2, $array1[0]);
php 내장 함수 찾아 보세요
array_combine() 함수를 이용해 볼 수 있을 듯 합니다. http://www.php.net/manual/en/function.array-combine.php
속도 개선이 있을지는 모르겠습니다.
$cnt = count($array1);
for ($i = 0; $i < $cnt; $i++) {
$array1[$i] = array_combine($array2, $array1[$i]);
}