protected static function removeValue(&$item, $index, &$err = null)
    {
        $err = null;

        if (!is_object($item) && !is_array($item)) {
            $err = (object)['var' => gettype($item), 'incomplete' => count($index)];
            return;
        }
        
        $key = array_shift($index);
        
        if (empty($index)) {
            if (is_object($item) && isset($item->$key)) unset($item->$key);
            if (is_array($item) && isset($item[$key])) unset($item[$key]);
            return;
        }
        
        if (is_object($item) && isset($item->$key)) return static::removeValue($item->$key, $index, $err);
        if (is_array($item) && isset($item[$key])) return static::removeValue($item[$key], $index, $err);
    }
protected static function removeValue(&$item, $index, &$err = null)
    {
        $err = null;

        if (!is_object($item) && !is_array($item)) {
            $err = (object)['var' => gettype($item), 'incomplete' => count($index)];
            return;
        }
        
        $key = array_shift($index);
        
        if (empty($index)) {
            if (is_object($item) && isset($item->$key)) unset($item->$key);
            if (is_array($item) && isset($item[$key])) unset($item[$key]);
            return;
        }
        
        if (is_object($item) && isset($item->$key)) return static::removeValue($item->$key, $index, $err);
        if (is_array($item) && isset($item[$key])) return static::removeValue($item[$key], $index, $err);
    }
protected static function removeValue ( & $ item , $ index , & $ err = null ) { $ err = null ; if ( ! is_object ( $ item ) && ! is_array ( $ item ) ) { $ err = ( object ) [ 'var' => gettype ( $ item ) , 'incomplete' => count ( $ index ) ] ; return ; } $ key = array_shift ( $ index ) ; if ( empty ( $ index ) ) { if ( is_object ( $ item ) && isset ( $ item -> $ key ) ) unset ( $ item -> $ key ) ; if ( is_array ( $ item ) && isset ( $ item [ $ key ] ) ) unset ( $ item [ $ key ] ) ; return ; } if ( is_object ( $ item ) && isset ( $ item -> $ key ) ) return static :: removeValue ( $ item -> $ key , $ index , $ err ) ; if ( is_array ( $ item ) && isset ( $ item [ $ key ] ) ) return static :: removeValue ( $ item [ $ key ] , $ index , $ err ) ; }
Navigate through the item and remove the value

@param array  $item
@param array  $index  The index sequence we are navigating to
@param object $err    Error object [OUTPUT]
@return mixed
Navigate through the item and remove the value