새로운 객체가 배열에 없을 때 배열에 푸시해야합니다. 그러나 나는이 오류를 계속 받는다. 루프에서 새 객체를 만들거나 루프에서 배열에 항목을 푸는 경우이 문제가 자주 발생합니다. 개체를 다시 사용하려고 시도했지만 멤버 값을 다시 설정했지만 여전히 동일한 오류가 발생합니다. 가장 좋은 방법은 무엇입니까?PHP - 객체를 배열에 넣기
오류 :
PHP Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes)
코드 :
if(!array_key_exists($a->name, $tArray)) $tArray[] = $a;
보기 : http://stackoverflow.com/questions/561066/php-fatal-error-allowed-memory-size-of-134217728-bytes-exhausted-codeigniter – Maetschl
개체는 참조가 아니라 값으로 전달됩니다. . 따라서 객체를 재사용하고 속성을 변경하면 배열의 기존 참조가 모두 변경됩니다. 개체를 반복하면서 배열로 푸는 경우이를 극복하기 위해 [clone] (http://php.net/manual/en/internals2.opcodes.clone.php) 메서드를 사용하여 새 개체를 인스턴스화해야합니다 . 그렇지 않으면 배열에 동일한 객체에 대한 참조가 모두 포함됩니다. 자세한 내용은 [this] (http://stackoverflow.com/questions/1064854/storing-objects-in-an-array-with-php) 문서를 참조하십시오. – War10ck
Maetschl, 의견이 내 문제를 해결했습니다. – ExceptionLimeCat