배열 질문
본문
$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에 넣어라..
라고 명령을 하시니
위의 오류가 발생한겁니다.