2016-10-31 3 views
1
if (!is_scalar($data)) { 
     if (is_object($data)) { 
     if (isset($data->{$key})) { 
      //my logic here - unset($data->{$key}); 

     } 
     } else { 
     if (isset($data[$key])) { 
      //my logic here - unset($data[$key]); 
     } 
     } 
    } 

위와 같은 조치를 취해야합니다. 객체의 정적 속성과 더 많은 경우를 고려하지 않아도됩니다. 이 작업을 수행하는 더 쉬운 방법이 있습니까? 나는 내가 그것을 수정할 수 있도록 $ 키에 의해 $ 데이터의 아이에 액세스 할 수 있도록하려면,하지만 난알 수없는 데이터 구조의 자식 요소에 대한 참조를 가져옵니다. PHP

마지막 것은 고려하는 일이 $ 데이터의 유형을 모르는 뜻이으로

내가있다 그래서 $ 데이터의 복사본을 생성 참조 $ 데이터를 변경하고있어 -> {$ 키} 또는 $ 데이터 [$ 키하여 상기 해제가

+3

프로세스를/설계에서 무엇이 잘못되었는지 살펴볼 필요가있는 것처럼 보입니다. 결론에 도달하기 전에 위의 tbh와 같은 해결 방법으로 끝내야합니다. – PeeHaa

+0

전체 컨텍스트는 다음과 같습니다. https://gist.github.com/slifin/816fca06028763e25d54fd16c92664aa 기본적으로 배열의 일부를 식별하는 데 사용되는 일련의 키가 깊은 배열이며 삭제 또는 변경하려고합니다 데이터 구조의 경우, 솔루션은 재귀를 사용합니다 – arcanine

답변

0
<?php 
if (isset($data) && !is_scalar($data)) { 
foreach ($data as $key => &$value) { 
    if ($key == $sub_iterator->key()) { 
    // custom logic here like unset($value); 
    } 
} 
} 

난이 작업 할 것이라고 생각 원본 실패한다는 것을 의미 배열과 객체 모두 테스트 만하면됩니다.

관련 문제