제목 | php에서 생성된 배열을 자바스크립트 변수 적용시 $.inArray 결과가 -1로만 나옵니다. | ||
---|---|---|---|
카테고리 | PHP | ||
글쓴이 | dyingmini | 작성시각 | 2018/03/21 15:36:22 |
|
|||
안녕하세요? 무지하지만 알려고 노력중인 개발자입니다. 본론으로 들어가자면 예를 들어 $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
|
강남원
/
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 타입으로 입력됩니다.
|
$.inArray 함수는 두번째 인자로 Array 타입을 넣어야하는데
아래와 같이 Key, Value 형태로 json_encode 를 하면 object 타입으로 변환됩니다.
$tm = array(1=>"사과",2=>"딸기",3=>"수박");
아래와 같이 배열에 담으면 javascript 의 Array 형태로 변형됩니다.
$tm = array(사과","딸기","수박");