배열의 키값을 다른 배열로 대체하는 쉬운방법이 있을까요 채택완료
$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. 필요할때 아래 같은 함수로 접근시키기.(업데이트가 아닌 값만 찾아오기)
</p><p>function tmp_key_val($key_array, $val_array, $search_key) {</p><p> $key = array_search($search_key, $key_array);</p><p> $var = $key_array[$var];</p><p> $result = $val_array[$var];</p><p> return $result;</p><p>}</p><p>echo tmp_key_val($array2, $array1[0], 'gga');</p><p>
4. 내장함수로 배열 만들기
</p><p>$array3[0] = array_combine($array2, $array1[0]);
</p><p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
array_combine() 함수를 이용해 볼 수 있을 듯 합니다. http://www.php.net/manual/en/function.array-combine.php">http://www.php.net/manual/en/function.array-combine.php
속도 개선이 있을지는 모르겠습니다.
</p><p>$cnt = count($array1);</p><p>for ($i = 0; $i < $cnt; $i++) {</p><p> $array1[$i] = array_combine($array2, $array1[$i]);</p><p>}</p><p>
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
서버를 mysql 구버전(4.x)에서 최신버전으로 옮겼는데
사용할 수 없는 문자열이 많이 생겨서
이미 사용중인 프로그램 자체를 고치긴 일이 너무 많고
데이터 칼럼수도 변경되서
그냥 쿼리후에 배열만 손봐서 돌아가게 만들려고 합니다.
호출할때 키만 같으면 동작은 문제없이 되거든요..