테스트 사이트 - 개발 중인 베타 버전입니다

클래스에서 배열 복사 채택완료

오늘도코딩 3년 전 조회 2,276

</p>

<p>class Menu{</p>

<p>    private $menu = array(array('name'=>'menu1'));</p>

<p>    public getMenu(){</p>

<p>        return $this->menu;</p>

<p>    }</p>

<p>}</p>

<p>$menu = new Menu();</p>

<p>$get_menu = $menu->getMenu();</p>

<p>$get_menu[0]['name']='test';</p>

<p>print_r($menu->getMenu());</p>

<p>

위 코드에서 $get_menu는 복사된 배열이 와야하는데 밑에서 print_r을 찍어보면 클래스의 $menu 내용도 바뀌어있습니다. 위 클래스의 코드가 저게 다는 아니고 다른 메소드에서 $menu의 레퍼런스값을 불러서 처리하는 코드가 있긴한데요. getMenu메소드는 순수하게 딱 저코드뿐인데 이상하네요. getMenu 메소드에서 배열을 복사해서 리턴하는 방법이 없을까요?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
세크티
3년 전

</p>

<p>public getMenu(){</p>

<p>    $array = json_encode($this->menu);</p>

<p>    return json_decode($array,true);</p>

<p>}</p>

<p>

위처럼 해서 리턴해보세요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

3년 전

마지막의 print_r에서 test가 나온다는 것은 말도 안되는 설명입니다

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

https://sandbox.onlinephpfunctions.com/

여기서 여러가지 버전으로 테스트해 보아도

Menu에 있는 $menu는 값이 바뀌지 않네요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인