개발 Q&A

제목 배열 객체를 삭제 하는 명령어는 없나요??
글쓴이 박세 작성시각 2014/09/17 10:53:23
댓글 : 13 추천 : 0 스크랩 : 0 조회수 : 15608   RSS
array_push 가 배열에 객체를추가를 하는거라면
반대로 객체를 제거 하는 명령어는 없나요?
array_pop 쓰니까 끝에 있는 객체만 제거 되네요
 다음글 정규표현식 질문 (5)
 이전글 jquery 질문 및 aptana 질문 드립니다!! 답... (1)

댓글

변종원(웅파) / 2014/09/17 10:58:34 / 추천 0
게시판 이동합니다.

http://kr1.php.net/manual/en/ref.array.php

한번에 제거할 수 있는 함수는 없지만 사용자들이 만들어서 올린 함수가 있습니다.
 
letsgolee / 2014/09/17 12:14:32 / 추천 0
@박세
원하는 함수는 array_shift()를 쓰면 되구요, 그리고 웅파님이 링크를 건 함수들을 적어도 한번 정도는 확인하는게 좋을 듯합니다.
한대승(불의회상) / 2014/09/17 12:18:36 / 추천 0
unset 사용 하셔도 됩니다.
unset($arr[8]);
letsgolee / 2014/09/17 12:50:09 / 추천 0
그러고보니 index에 대한 이야기가 없네요. 그렇다면 array_splice를 잘 연구해 보세요.
박세 / 2014/09/17 13:30:24 / 추천 0
아 감사합니다 unset 으로 하니까 잘되네요 
변종원(웅파) / 2014/09/17 14:34:09 / 추천 0
아.. unset으로 빼먹기가 되네요. 이런...
letsgolee / 2014/09/17 17:21:26 / 추천 0
제가 unset을 array에 잘 안쓰는 이유는 
다음을 돌려보면 압니다:
 
<?php
$arr = array();
for ($i = 0; $i < 10; $i++) {
 $arr[$i] = ($i + 1) * 10;
}
// unset test
unset($arr[6]);
unset($arr[7]);

for ($i = 0; $i < 10; $i++) {
 if (isset($arr[$i])) {
  echo $i.' => '.$arr[$i].'<br/>';
 }
}

?>
들국화 / 2014/09/17 17:39:14 / 추천 0
위에거 돌려 봤는데.. 잘 나오는거 같은데요.
변종원(웅파) / 2014/09/17 18:18:57 / 추천 0
letsgolee/ key가 연속되지 않아서 그런건가요?
letsgolee / 2014/09/18 09:13:48 / 추천 0
@웅파
네, 때로 주의하지 않으면 실수하게 되거든요. unset은 그 index에 해당하는 값을  null값으로 지정하기 때문에 index의 변화는 없습니다. 따라서 for 문을 돌리거나 할 때 isset으로 확인해야 합니다.
변종원(웅파) / 2014/09/18 09:59:21 / 추천 0
letsgolee/ 그렇긴 하죠. unset으로 빼먹은지 모르고 foreach 돌리다 왜 없지 할 수도 있죠. 
한대승(불의회상) / 2014/09/18 10:15:02 / 추천 0
웅파// foreach의 경우 의도하고 데이터를 뺏기 때문에 문제는 되지 않을것 같습니다.
letsgolee// for 보다 foreach를 선호 하는 이유중 하나 입니다. 물론 꼭 for를 써야 할 때는 주의 해야 하구요. ^^
코드이그 / 2014/09/19 11:58:27 / 추천 0
와우 ㅎㅎ 무수한 팁들이 난무하네요