[php] array_unique의 결과값을 json_encode 로 변환시 복불복에 대해서

2015. 2. 14. 05:24 from Dev/php

php라는 언어 자체가 상당히 헐렁(loose. 비하는 아님)한 언어이기 때문에 편하기도 하지만, 가끔 가다가는 결과값이 어떻게 올지 불확실할 수 있다는 점 또한 받아들여야 하는데.. 삽질 열심히 하다 원인을 알게 되면 너무 허무합니다.

오늘의 삽질은.. 처음에 손대면서는 30분이면 되겠지 하고 시작한 처음은 미미하였던 일이.. 시간이 지나면서 해결도 안되고 점점 창대해지는 사태를 거치는 상황이었습니다.

요는. array_unique를 써서 array 내의 중복값을 없앤 다음에 json_encode로 다른 app에 넘겨주면 끝나는 일이었습니다.

뭐 간단하네. 요거만 하고 자야지 했는데 이게 왠걸;; 어디서 났는지 모를 에러들이..

원인을 찾아보니 array_unique로 정리를 할 때, 그냥 예쁘게 이렇게 되는 걸 바랬는데 :

['Series A', 'Series B']


가끔 가다 그렇게 안되고 이렇게 되고 마는 것입니다.

[{"0":"'Series A","1":"Series B"}]


뒤져보다 보니, array_unique로 중복값을 정리하면서 어떤 경우에는 숫자로 인덱싱된 array가 남지 않는 경우가 생긴다는 거였습니다. 즉 json_encode해주면 위의 경우처럼 숫자 인덱싱이 남아버리는 거지요. ㅡ.ㅡ

원인을 알고나니 방법은 의외로 간단히..

json_encode 해주기 전에 array_values로 numerically indexed array를 강제로 만들어주는 것으로 해결되었습니다.

array_values(array_unique($data))


php를 다시 한번 돌아보게 해주는 하루였습니다. ㅋㅋ

Posted by banasun :