0

私はこれについて頭を悩ませてきましたが、解決策を見つけることができないようです。特定の子キーのすべての親キーを取得する関数が必要です。たとえば、次のような配列があるとします。

array(
    'apples' => array(
        'bananas' => array(
            'strawberries' => array(
                'fruit' => array()
            )
        )
    )
)

「key_get_parents($key, $array)」のような関数を呼び出すと、すべての親キーを含む配列が返されます。この例では、array('apples', 'bananas', 'strawberries') になります。

4

1 に答える 1

5
$array = array(
    'apples' => array(
            'bananas' => array(
                    'strawberries' => array(
                            'fruit' => array()
                    )
            )
    )
 );

function key_get_parents($subject, $array)
{
  foreach ($array as $key => $value)
  {
    if (is_array($value))
    {
      if (in_array($subject, array_keys($value)))
        return array($key);
      else
      {
        $chain = key_get_parents($subject, $value);
        if (!is_null($chain))
          return array_merge(array($key), $chain);
      }
    }
  }

  return null;
}

// Prints "Array ( [0] => apples [1] => bananas )"
print_r(key_get_parents('strawberries', $array)); 
于 2012-08-20T13:25:36.787 に答える