2010-12-20 3 views
1

그래서 객체에 저장된 다차원 배열을 가지고 있습니다. 이 배열에 키를 추가하고 싶습니다.다차원 배열을 객체 변수로 저장하고 배열에 키를 추가합니다.

$object->pathsArray = array(
    "key1" => array('path' => '/some/path/to/some/file.php', 'action' => 'index'), 
    "key2" => array('path' => '/some/path/to/some/class.php', 'action' => 'method2') 
); 

그리고 여기에 내가 일하는 것이 가정하지만 무슨 짓을했는지 : 여기

내가 가진 무엇

$object->pathsArray['key3'] = array('path' => '/some/path/to/some/method/or/script.php', 'action' => 'method3'); 

내 첫 번째 해결 방법 :

$newPathsArray = array("key3" => array('path' => '/some/path/to/some/method/or/script.php', 'action' => 'method3')); 
$object->pathsArray = array_merge($object->pathsArray, $newPathsArray); 
작동해야3210

다른 해결 방법 :

$tempPathsArray = $object->pathsArray; 
$tempPathsArray['key3'] = array('path' => '/some/path/to/some/method/or/script.php', 'action' => 'method3'); 
$object->pathsArray = $tempPathsArray; 

그래서 내 질문 :은 간단한 구문이 있나요 (예 : 한 줄 솔루션) 또는 내가 임시 가져올 수 밖에입니다. 변수에 추가 한 다음 개체에 값을 병합/다시 할당 하시겠습니까?

+0

첫 번째 버전이 작동하지 않는다면 어떤 방법으로 실패 했습니까? 'pathsArray'는 단순히 변경되지 않았습니까? 그렇다면 개체에 사용자가 요청할 때마다 실제 저장된 배열의 * 복사본 *을 제공하는 일종의 사용자 지정 가져 오기/설정 논리가 있음을 알 수 있습니다. 따라서 실제로 변경할 수있는 유일한 방법은 설정 논리, 전체 배열을 덮어 씀). 그렇다면 첫 번째 해결 방법은 아마도 가장 간단한 방법 일 것입니다. – Amber

+0

@Tom 처음에'key1'과'key2' 키를 어떻게 설정 했습니까? 'pathsArray' 속성이 private/protected로 정의되어 있습니까? –

+0

@Amber, 나는 지금 완벽하게 이해되는 get/set 논리를 고려하지 않았습니다. – Tom

답변

0

답변을 작성하는 데 죄송하지만 의견을 남길 수 없습니다. 그런 식으로 속성을 공용으로 사용하는 것은 옳지 않다고 생각합니다. 올바른 것은 그것을 채우기위한 설정자를 만들어야하며, 단지 그것을위한 클래스 디자인을 수정해서는 안됩니다.

관련 문제