2016-10-31 4 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

私は検討する最後のものは、私である私は、私はそれを修正することができるように$キーで$データの子へのアクセス権を持つようにしたいが、私は

である事の$データの種類を知らないわけ[ように$データのコピーを作成し、参照により$データを変更m - でデータ[$キー]> {$キー}または$は解除が原本で

+3

あなたは一歩前進して、プロセス/デザインに何が間違っているかを見ているようです結論に達する前に、あなたは上記のような回避策で終わらなければなりません。 – 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); 
    } 
} 
} 

を失敗することを意味私はこの上で動作すると思います配列とオブジェクトの両方をテストするだけです。