질문/조언질답게시판

PHP 함수중에 그냥 별 다른 URL없이 질문이 가능할 것 같아서 질문 드립니다.

 

이 질문의 원하는 답변은 "성능"에 있습니다.

 

1. 개요

 

telegram 에서 받아온 채팅메세지의 Json 정보를 가져옵니다. 이 정보는 채팅 갯수에 따라 array(배열)으로 넘어오게 됩니다.

 

이 배열에서 1000개의 메세지가 있을 경우가 있습니다.

 

이때, 배열의 최종 마지막의 데이터만 가져오고 싶어서 구글링해서 찾아낸 함수가 다음의 함수입니다.

 

end($array);

 

http://php.net/manual/kr/function.end.php

 

자세한 내용은 위의 링크를 참조 하시면 될 것 같습니다.

 

2. 문제점

 

이 문제는 1000개이상의 배열데이터를 사용하다보면 마지막에 있는 배열을 인덱스를 따로 잡을 수 없다는 문제가 있습니다.

 

원래 배열의 경우 $array[$key] 와 같이 $key의 해당되는 인덱스가 무엇인지 알면 그것만 꼬집어 가져오게되면 아무런 문제가 없으나, 제 경우는 모든 인덱스를 확인할 수 없어서 마지막에 있는 아이템을 가져와야 하는 상황에서 성능이 우려 됩니다.

 

end함수를 썼을때, 만약 전체를 loop 혹은 for 을 돌리면서 마지막의 인덱스에 해당되는 데이터를 반환시킨다면 저는 이 함수를 사용할 수 없을 것 같습니다...

 

혹시 이 함수가 정확하게 동작하는 방식을 알고 계신 분이 계신가요?

 

3. 최종 질문.

 

* 이 함수가 정확하게 작동을 하는 방법이 전체 반복인가요? 아니면 마지막의 인덱스를 직접 찝어서 가져오는 방식인가요?

 

* 이 함수를 막 활용해도 성능상에 큰 문제가 없을 것인가요?

 

이 두가지 입니다.

  • profile

    마지막 인덱스를 찝어서 가져옵니다. 내부적으로 루프 돌리지 않습니다. 아주 빨라요.

    단, 동일한 배열에 foreach 루프를 돌리는 도중에 end를 쓰면 foreach 루프를 어디까지 돌렸는지 까먹는 부작용이 있으니 주의하세요. 루프 전후에 쓰거나, 다른 배열에 루프 돌리면서 쓰는 건 괜찮습니다.

  • profile profile
    아! 감사합니다 :)

    안심하고 쓸 수 있겠네요 ㅎㅎ