2014-09-30 2 views
0

PHP로 OpenSource 프로젝트를 개발 중이며 옵션 배열을 조작해야합니다.옵션 배열 조작

나는 함수를 사용하여 이러한 작업을 수행하려고합니다. 아래에 내가하려는 작업의 예가 있습니다. 이것을 관리하는 것이 올바른지, 아니면 다른 옵션이 있을지, 아니면이 모든 것을 처리 할 수있는 이미 만들어진 클래스가 있을지 모르겠다. 나는 모두 해결책에 열려있다.

// Define an array of options 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelB' => array(
     'property3' => 'value3', 
     'property4' => 'value4', 
    ), 
    'levelC' => array(
     'property5' => 'value5', 
     'property6' => 'value6', 
    ) 
) 
) 

// Remove the property5 in levelC in options. 
$arr = array_delete_value($arr, array('options', 'levelC', 'property5')); 

// Result array 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelB' => array(
     'property3' => 'value3', 
     'property4' => 'value4', 
    ), 
    'levelC' => array(
     'property6' => 'value6', 
    ) 
) 
) 

// Delete the levelB in options. 
$arr = array_delete_value($arr, array('options', 'levelB')); 

// Result array 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelC' => array(
     'property6' => 'value6', 
    ) 
) 
) 

// Set a new value in the options in options -> levelD -> property7. Create it if needed. 
$arr = array_set_value(array('options', 'levelD', 'property7'), 'value7'); 

// Result array 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelC' => array(
     'property6' => 'value6', 
    ), 
    'levelD' => array(
     'property7' => 'value7', 
    ) 
) 
) 

// Create an array of options in options -> levelD 
$arr = array_set_value(array('options', 'levelD'), array('property8' => 'value8', 'property9' => 'value9')); 

// Result array 
$arr = array(
    'options' => array(
    'levelA' => array(
     'property1' => 'value1', 
     'property2' => 'value2', 
    ), 
    'levelC' => array(
     'property6' => 'value6', 
    ), 
    'levelD' => array(
     'property8' => 'value8', 
     'property9' => 'value9', 
    ) 
) 
) 
+3

그래서 무엇이 문제입니까? – Utkanos

+1

이것은 Object 자료처럼 보입니다 - 데이터 구조와 트랜잭션이 충분히 복잡하고 그들 만의 고유 한 클래스가되어야합니다. –

답변

1

당신은 일을 배열에서 값을 제거 할 수 있습니다 unset

unset($arr['options']['levelC']['property5']); 
또한 단순히 무엇을 더 Arrays in PHP 수에 내가보고 제안

$arr['options']['levelD'] = array('property8' => 'value8', 'property9' => 'value9'); 

을 수행하여 PHP는 배열에 물건을 추가 할 수 있습니다

해야 할 것.

휠을 다시 만들지 않아도됩니다. 왜 당신이 수업을 만들 필요가 있을지 나는 불확실하다. 아마도 당신이 나에 대한 코멘트에서 명확히 할 수 있을까요? 그럼에도 불구하고 더 복잡한 작업을 수행하기 위해 자신 만의 클래스를 작성해야한다면 최소한 위에서 지정한 함수를 활용할 수 있습니다.