Changeset 453

Show
Ignore:
Timestamp:
08/30/2007 07:09:15 AM (15 months ago)
Author:
Geert
Message:
  • URI->segment_array() now accepts an offset and a boolean to trigger 'associativeness'
    • Example: segment_array(2, TRUE) on 'welcome/index/veg/carrot/color/orange' returns array('veg' => 'carrot', 'color' => 'orange')
  • URI->last_segment() added
Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/system/libraries/URI.php

    r447 r453  
    2222         * 
    2323         * @access      public 
     24         * @param   integer 
     25         * @param   boolean 
    2426         * @return      array 
    2527         */ 
    26         public function segment_array() 
     28        public function segment_array($offset = 0, $associative = FALSE) 
    2729        { 
    28                 $i = 1; 
    29                 $segment_array = array(); 
    30  
    31                 foreach (self::$segments as $segment) 
     30                $segment_array = self::$segments; 
     31                array_unshift($segment_array, 0); 
     32                $segment_array = array_slice($segment_array, $offset + 1, $this->total_segments(), TRUE); 
     33                 
     34                if ( ! $associative) 
     35                        return $segment_array; 
     36                 
     37                $segment_array_assoc = array(); 
     38                 
     39                foreach (array_chunk($segment_array, 2) as $pair) 
    3240                { 
    33                         $segment_array[$i++] = $segment; 
     41                        $segment_array_assoc[$pair[0]] = isset($pair[1]) ? $pair[1] : ''; 
    3442                } 
    35  
    36                 return $segment_array; 
     43                 
     44                return $segment_array_assoc; 
    3745        } 
    3846 
     
    4553        public function string() 
    4654        { 
    47                 return implode('/', self::$segments); 
     55                return self::$current_uri; 
    4856        } 
    4957         
     
    5866                return count(self::$segments); 
    5967        } 
     68         
     69        /** 
     70         * Returns the last URI segment 
     71         * 
     72         * @access      public 
     73         * @return      string 
     74         */ 
     75        public function last_segment() 
     76        { 
     77                return self::$segments[$this->total_segments() - 1]; 
     78        } 
    6079 
    6180} // End URI Class