개발 Q&A

제목 코드 재사용 관련 문의
글쓴이 freeseamew 작성시각 2014/12/11 01:05:06
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 10762   RSS
아래 코드에서 for문 안쪽 부분을 계속해서 반복해서 사용하는 프로그램을 짜고 있는데요. ctrl + c,p 해서 계속해서 사용하다 보니 먼가 좀 낭비인 것 같아 이 부분을 function으로 만들어 불러와서 사용하고 싶습니다. 


// 1번 사용중인 소스

            $x_count = 14;
            $y_count = 6;
            $table_number = 'a';

            $soc_count = 0;
             /***************************************************************************
            * 아래 부분이 계속해서 사용되는 부분입니다. 
            ***************************************************************************/
            for($i = 1; $i < $y_count; $i++) {
    
                $soc_count = $soc_count + 1;

                for($j = 1; $j < $x_count; $j++){

                    $info_name_code = $table.$soc_count;

                    $info_content_count = $this->data_m->read_info_content_count_m($info_content_year, $info_name_code, $j);

                    if($info_content_count == 0){

                        $info_content = $this->data_m->read_info_content_seq_m($info_name_code);
                        
                        $data['info_content_num_'.$table_number.'_'.$i.'_'.$j] = '';
                        $data['info_content_string_'.$table_number.'_'.$i.'_'.$j] = '';        
                        $data['info_name_seq_'.$table_number.'_'.$i.'_'.$j] = $info_content["info_name_seq"]; // 여기 확인
                    }
                    else{

                        $info_content = $this->data_m->read_info_content_m($info_content_year, $info_name_code, $j);

                        $data['info_content_num_'.$table_number.'_'.$i.'_'.$j] = number_format($info_content["info_content_num"], 1);
                        $data['info_content_string_'.$table_number.'_'.$i.'_'.$j] = $info_content["info_content_string"];
                        $data['info_name_seq_'.$table_number.'_'.$i.'_'.$j] = $info_content["info_name_seq"];
                    }
                
                }
            }
....



그래서 아래와 같이 function으로 만들고
 $this->view_temp($x_count, $y_count, $table_number, $soc_count, $table, $info_content_year); 
이런 식으로 불러오니 실제로 data[] 값이 만들어져 view로 전달되지 않더군요.
어떤 부분을 수정하면 될지 의견 부탁드립니다. 



// 2번 변경을 원하는 소스

    function view_temp($x_count, $y_count, $table_number, $soc_count, $table, $info_content_year) {

        for($i = 1; $i < $y_count; $i++) {

            $soc_count = $soc_count + 1;

            for($j = 1; $j < $x_count; $j++){

                $info_name_code = $table.$soc_count;

                $info_content_count = $this->data_m->read_info_content_count_m($info_content_year, $info_name_code, $j);

                if($info_content_count == 0){

                    $info_content = $this->data_m->read_info_content_seq_m($info_name_code);
                    
                    $data['info_content_num_'.$table_number.'_'.$i.'_'.$j] = '';
                    $data['info_content_string_'.$table_number.'_'.$i.'_'.$j] = '';     
                    $data['info_name_seq_'.$table_number.'_'.$i.'_'.$j] = $info_content["info_name_seq"]; // 여기 확인
                }
                else{

                    $info_content = $this->data_m->read_info_content_m($info_content_year, $info_name_code, $j);

                    $data['info_content_num_'.$table_number.'_'.$i.'_'.$j] = number_format($info_content["info_content_num"], 1);
                    $data['info_content_string_'.$table_number.'_'.$i.'_'.$j] = $info_content["info_content_string"];
                    $data['info_name_seq_'.$table_number.'_'.$i.'_'.$j] = $info_content["info_name_seq"];
                }
            
            }
        }

        return $data;
    }



참고로 이렇게 돌린 data값은 아래와 같이 전달하고 있습니다. function만들어 사용하지 않고 그냥 쓰면 잘 되고 있군요
            $data['company_code'] = $company_code;
            $this->load->view('dashboard/create_soc_4_v', $data);




 
 
 다음글 ci 이외 질문입니다... (8)
 이전글 JSON데이터 관련 질문 (2)

댓글

변종원(웅파) / 2014/12/11 12:27:23 / 추천 0
뭐가 문제인건지 잘 모르겠네요. 소스의 로직은 보지 않았습니다.

함수에서 데이터 받아서 뷰로 전달하면 되는데 2차 배열로 뷰에 전달된다는 말씀인가요?
freeseamew / 2014/12/11 15:34:14 / 추천 0
아 제 설명이 부족했나 봅니다. ㅡㅜ

제가 만들고 있는 사이트가 좀 반복적인 데이터를 받아서 뷰로 전달하는데요.

'1번 사용중이 소스' 가 계속해서 반복적으로 사용되고 있습니다. 그러다 보니 소스의 양만 많아지고 조금 많이 비효율 적인 것 같아서 그 데이터 적제 부분을 function처리 해서 '2번 변경을 원하는 소스' 처럼 만들어 

$x_count = 14;
$y_count = 6;
$table_number = 'a';

 $soc_count = 0;
 $this->view_temp($x_count, $y_count, $table_number, $soc_count, $table, $info_content_year);  


$x_count = 14;
$y_count = 6;
$table_number = 'b';

 $soc_count = 6;
 $this->view_temp($x_count, $y_count, $table_number, $soc_count, $table, $info_content_year);  


이런 식으로 위와 같이 사용하고,

최종적으로 뷰단으로 아래와 같이 전달하는 방법이 없을까 해서 문의 드렸습니다. 
 
 $this->load->view('dashboard/create_soc_4_v', $data);



그럼 혹시 아시는 분은 의견 부탁드리겠습니다.^^ 
 
바보돌쇠 / 2014/12/11 20:06:39 / 추천 0
컨트롤러에서 $data를 print_r() 또는 var_dump()로 찍었을 때 값이 나오나요?

컨트롤러에서 나오는데 뷰에서 나오지 않는다면, 저 같은 경우는 복잡할 경우
원하는 데이터를 덮어써버리는 경우가 종종 있었거든요... ^^;
변종원(웅파) / 2014/12/12 10:25:48 / 추천 0
리턴 없이 특정 변수에 넣어서 쓰고 싶다는 말씀인가요? 
왜 그래야 하는지 특별한 이유가 있을까요?
함수는 결과를 리턴한다는 대명제를 거스를만한 사유말이죠. ^^;