CI 묻고 답하기

제목 라이브러리 사용시 배열부분 질문드립니다.
글쓴이 뽁쓰 작성시각 2010/04/29 14:34:09
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 22060   RSS
라이브러리를 사용하고 있는데 자꾸 에러가 나서 질문드립니다.

foreach($query->result_array() as $rows) {
  
   $connZone = $rows['LogDate'];
   $tempConnList[$connZone] += $rows['CT'];
   $tempAllConn += $rows['CT'];
   $connList[] = $rows;

  }

쿼리는 제대로 실행되는데
$tempConnList[$connZone] += $rows['CT'];
에서 $connZone값을 키값으로 하는 배열을 만들려고 합니다. 해당 키값은 날짜구요(04-22)
그런데 자꾸

 

A PHP Error was encountered

Severity: Notice

Message: Undefined index: 04-22

Filename: libraries/qrstatic.php

Line Number: 27


아래와 같은 에러가 출력되는데 뭐가 문제일까요?
 다음글 db query 관련하여... (2)
 이전글 안녕하세요 ~ (8)

댓글

변종원(웅파) / 2010/04/29 14:57:55 / 추천 0
 $tempConnList[$connZone] += $rows['CT'];  이 부분이 이해가 안되네요?

 $tempConnList[$connZone] =  $tempConnList[$connZone] + $rows['CT']; <--이거인데

당연히 에러를...

$connZone을 배열의 키로 하시려면......................

(원래 php 기본에 관련된 답변은 안드리지만....)

$tempConnList= array();
foreach(){
$tempConnList = array($connZone=>$value);
}

한번 돌려보세요.
뽁쓰 / 2010/04/30 15:31:34 / 추천 0
일반 코딩에서는 저렇게 해도 문제가 없었는데
codeigniter에서는 배열의 키값이 없을때에는 에러가 나는군요

예를들어 저경우에는 a값이 초기에는 없기때문에 a = a + 1 를 하면 일반코딩에서는 에러가 안나지만
codeigniter에서는 a가 초기에 null이기때문에 에러가 나는거였군요..
웅파님 감사합니다 ^^
kirrie / 2010/04/30 15:53:48 / 추천 0
php의 에러 리포팅은 에러를 몇개의 단계로 나누어 표시합니다.
notice, warning, error, fatal 등등... (자세히는 기억 안남;)

warning까지는 그냥 경고수준입니다. 에러는 아니지만 그렇게 하면 안된다는거죠.

이건 error_reporting함수를 이용해서 설정을 변경해줌으로써 표시되게 할 수도 안되게 할 수도 있습니다.

php는 변수선언을 강제하지 않기 때문에 $arr['k'] = 'aaa'; 라고 선언해버려도 동작하지만 이 경우에
notice 에러가 발생합니다. 왜냐하면 $arr는 array형으로 선언이 되어있지 않기 때문입니다.
이 문제를 해결하려면

1. index.php를 열면 error_reporting이 있는데 이걸 error_reporting(0); 으로 설정합니다.
이럼 에러메세지가 안나옵니다. (보통 publish된 사이트는 이렇게 운용합니다.)
아니면 error_reporting(E_ALL ^ E_NOTICE)로 해 놓으면 notice는 안나오고 나머지 에러는 display합니다.

2.혹은 먼저 변수를 선언해줍니다. 작성하신 코드라면 foreach구문 바로 위에 $tempConnList = array(); 만 넣어주시면 정상적으로 동작할 것입니다.
변종원(웅파) / 2010/04/30 16:12:05 / 추천 0
codeigniter는 기본셋팅이 모든 에러, notice를 뿌리게 되어있습니다. kirrie님 말씀대로 index.php파일 첫머리에 선언되어 있지요.
1번 방법보다는 저는 2번 방법을 추천합니다. ^^