개발 Q&A

제목 php에서 생성된 배열을 자바스크립트 변수 적용시 $.inArray 결과가 -1로만 나옵니다.
카테고리 PHP
글쓴이 dyingmini 작성시각 2018/03/21 15:36:22
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 11312   RSS

안녕하세요? 

무지하지만 알려고 노력중인 개발자입니다.

본론으로 들어가자면

예를 들어

$tm = array(1=>"사과",2=>"딸기",3=>"수박"); 

이렇게 key와 value 가 인위적으로 생성된 값을

var tm = <?=json_encode($tm)?>;

으로 넣었습니다.

하지만 alert($.inArray("사과",tm));

으로 하면 -1결과만 나오더군요

공백 등 특수문자 유령문자 없습니다.

고수님들 도와주셔요 ㅡㅜ

 다음글 json data를 받는 방법에 대하여 (1)
 이전글 php 외부ip접속문의 (2)

댓글

이제다시 / 2018/03/21 16:55:40 / 추천 0

$.inArray 함수는 두번째 인자로 Array 타입을 넣어야하는데

아래와 같이 Key, Value 형태로 json_encode 를 하면 object 타입으로 변환됩니다. 

$tm = array(1=>"사과",2=>"딸기",3=>"수박");  

 

아래와 같이 배열에 담으면 javascript 의 Array 형태로 변형됩니다. 

$tm = array(사과","딸기","수박"); 

강남원 / 2018/03/22 13:08:36 / 추천 0

var tm = "<?=json_encode($tm)?>";

문자열이면 "로 안감싸면 숫자로 안드가나요.

이제다시 / 2018/03/22 14:07:32 / 추천 0

javascript 에는 object 타입과 array 타입이 있습니다.

 

일반 적으로 object 는 { key : value } 형태로 중괄호 형태로 묶여 있습니다. 

array 는  [ 1,2,3,4,5 ] 형태로 대괄호로 묶여 있습니다. 

 

설명 들였다 시피 php 에서 key => value 형태의 array 를 json_encode 한다면

javascript 의 object 형태로 변환됩니다. 

ex) $tm = array(1=>"사과",2=>"딸기",3=>"수박"); 

echo json_encode($tm); // 출력 : { 1 : "사과 " , 2 : "딸기", 3:"수박" }

 

jQuery  의 inArray 함수는 메뉴얼에 보면 Array 중에 해당하는 네임값이 있다면

그 array 의 index 값을 반환하는 함수 입니다. 

허나 object 를 inArray 에 넣으면 해당하는 결과를 찾을 수 없으니 -1 이 무조건 반환 되는것입니다. 

 

하여 php 에서 array 를 key, value 형태가 아닌 일반적인 array 형태 즉

ex) $tm = array("사과","딸기","수박"); 

echo json_encode($tm); // 출력 : [ "사과" , "딸기", "수박"]

 

한다면 array 값이 있다면 해당 값이 들어있는 index 가 0, 1, 2 로 리턴됩니다. 

참고로 "" (따옴표) 로 묶으신다면 해당 변수에는 string 타입으로 입력됩니다.