반응형
foreach 루프 내의 배열에서 객체를 삭제하는 방법은 무엇입니까?
객체 배열을 반복하고 'id'속성에 따라 객체 중 하나를 삭제하려고하지만 코드가 작동하지 않습니다.
foreach($array as $element) {
foreach($element as $key => $value) {
if($key == 'id' && $value == 'searched_value'){
//delete this particular object from the $array
unset($element);//this doesn't work
unset($array,$element);//neither does this
}
}
}
어떤 제안이라도. 감사.
foreach($array as $elementKey => $element) {
foreach($element as $valueKey => $value) {
if($valueKey == 'id' && $value == 'searched_value'){
//delete this particular object from the $array
unset($array[$elementKey]);
}
}
}
foreach
값에 대한 참조를 사용할 수도 있습니다 .
foreach($array as $elementKey => &$element) {
// $element is the same than &$array[$elementKey]
if (isset($element['id']) and $element['id'] == 'searched_value') {
unset($element);
}
}
설정 해제에 대한 구문이 유효하지 않은 것 같습니다. 다시 색인화가 없으면 나중에 문제가 발생할 수 있습니다. PHP 배열 섹션을 참조하십시오 .
올바른 구문은 위에 나와 있습니다. 또한 재 인덱싱을위한 배열 값 을 염두에두고 이전에 삭제 한 항목을 인덱싱하지 마십시오.
이 트릭을해야합니다 .....
reset($array);
while (list($elementKey, $element) = each($array)) {
while (list($key, $value2) = each($element)) {
if($key == 'id' && $value == 'searched_value') {
unset($array[$elementKey]);
}
}
}
나는 PHP 프로그래머가 아니지만 C #에서는 배열을 반복하는 동안 배열을 수정할 수 없다고 말할 수 있습니다. foreach 루프를 사용하여 요소 또는 제거 할 요소의 색인을 식별 한 다음 루프 뒤의 요소를 삭제하려고 할 수 있습니다.
참고 URL : https://stackoverflow.com/questions/2304570/how-to-delete-object-from-array-inside-foreach-loop
반응형
'IT박스' 카테고리의 다른 글
멋진 글꼴에 사용자 정의 아이콘 추가 (0) | 2020.07.02 |
---|---|
Java 서블릿에서 쿠키를 제거하는 방법 (0) | 2020.07.02 |
파이썬에 내장 기능이 있습니까? (0) | 2020.07.01 |
리눅스에서 itoa 기능은 어디에 있습니까? (0) | 2020.07.01 |
numpy, scipy, matplotlib와 pylab의 혼동 (0) | 2020.07.01 |