2012-11-21 14 views
0

내가 가진이 정상적인 배열 이름 $ 도착 .. 및 array_push() 함수를 사용하여 배열에 뭔가를 밀어하려고 ... 그것은이 출력 생산 array_push($arr['alerts_data'], 999); 같은 :이상한 행동

Array 
(
    [alerts_data] => Array 
     (
      [0] => 169 
      [1] => 175 
      [2] => 111 
      [3] => 48 
      [4] => 999 
     ) 

) 

내가 좋아하는 편곡 $에서) (해제 뭔가하려고 할 때,

{"alerts_data":[169,175,111,48,111,999]} 

을 :하지만 난 내가 가진로 json_encode 사용

unset($arr['alerts_data'][4]);// will remove removes the 999 

한 다음 여기에 잘못 이것이 JSON 객체

{"alerts_data":{"0":169,"1":175,"2":111,"3":48}} 

있어, 다시로 json_encode를 사용합니까? 너는 말할 수 있니? unset() 함수를 사용하여 위의 첫 번째로 인코딩 된 json을 얻고 싶습니다.

+3

위의 정확한 예 (마지막 숫자 요소 삭제)로 확인할 수 없습니다. 그러나 숫자에 간격이 생기는 배열 키를 삭제하면 객체가 다시 생깁니다. –

+0

정확한 예를 사용하면 자바 스크립트에 연관 배열이 없으므로'{ "alerts_data": [169,175,111,48]}' –

답변

4

그렇습니다. 배열 키가 더 이상 연속적이지 않으므로 결합 배열로 처리되고 PHP 연관 배열이 JavaScript 객체가됩니다. JavaScript에 연관 배열이 없기 때문입니다.

array_splice()을 사용하면 배열에서 요소를 완전히 제거 할 수 있습니다.

+1

... 그리고 PHP 연관 배열이 JavaScript 객체가됩니다. –

+0

@ ÁlvaroG.Vicario : 추가되었습니다. 감사합니다. –

+0

거기에, 대답 주셔서 감사합니다, array_splice() 내 경우에 유용하다는 것을 몰랐어요. –

2

키에 갭이 있습니다 (3에서 5로 바뀜). 은 유효하기 위해 개체를 만들어야합니다. 두 가지 가능한 솔루션 :

array_splice($arr['alerts_data'], 4, 1); 

unset($arr['alerts_data'][4]); 
$arr['alerts_data'] = array_values($arr['alerts_data']); 
+0

당신은 거기에 좋은 접근 방식을 가지고 감사합니다. –