배열 질문

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
배열 질문

QA

배열 질문

답변 3

본문

$my_array 라는 배열을 제가 만들었어요

 

그래서 이 배열에 OK 라는 키가 있는지를 확인해서 없다면 OK 라는 키 값에 0 이라는 값을 부여하기위해

 

if(empty($my_array)) {

$my_array = array();

}

 

if(!array_key_exists("OK",$my_array)) {

      $my_array['OK'] = 0;

}

 

이렇게 설정했더니

 

Warning: Illegal string offset 'OK' in /home1/******/public_html/skin/board/******/list.skin.php on line 28

 

이런 오류가 나네요 뭐가 문제인가요??

이 질문에 댓글 쓰기 :

답변 3

잘 모르겠습니다만,

if 문 안에 있는 배열 선언부가 실행이 안되어

warning(경고)이 출력되는 것이 아닌가 싶습니다. warning 은 error 와는 구분됩니다.

warning 은 더 나은 코드를 권장하는 성격이라서 반드시 수정해야 하는 것은 아닙니다.

(에러메시지 출력 옵션으로 warning 메시지 출력을 조절할 수 있습니다.)

 

if 문을

if(empty($my_array)) {

->

if  (!is_array($my_array)) {

로 바꾸어보면 어떨까 합니다.

그럴 목적이라면 $my_array라는 변수가 선언되어 있는지 확인해 보는게 순서일것 같습니다.

if(!isset($my_array)) {
    $my_array = array();

if(!array_key_exists("OK", $my_array)) {
    $my_array['OK'] = 0;
}

에러메세지를 보시면

 

illegal string offset 'OK' 라고 명시되어있듯

 

OK라는 배열첨자가 존재하지 않는데

강제로 부여하려고 한것이 원인입니다.

 

사용하신

array_key_exists

이 함수는 배열이 존재하면 true를 반환 합니다.

http://php.net/manual/kr/function.array-key-exists.php

 

그런데 사용하신방법이

if(!array_key_exists("OK",$my_array)) 

입니다.

 

여기서 문제는 ! 입니다.

문장으로 보면 존재하지 않으면 수행 이란 결과가 되겠죠

 

즉 OK가 없는데 OK에 넣어라..

라고 명령을 하시니

 

위의 오류가 발생한겁니다.

 

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 126,530
© SIRSOFT
현재 페이지 제일 처음으로