| 105 | | $segment_array = self::$segments; |
| 106 | | array_unshift($segment_array, 0); |
| 107 | | $segment_array = array_slice($segment_array, $offset + 1, $this->total_segments(), TRUE); |
| 108 | | |
| 109 | | if ( ! $associative) |
| 110 | | return $segment_array; |
| 111 | | |
| 112 | | $segment_array_assoc = array(); |
| 113 | | |
| 114 | | foreach (array_chunk($segment_array, 2) as $pair) |
| 115 | | { |
| 116 | | $segment_array_assoc[$pair[0]] = isset($pair[1]) ? $pair[1] : ''; |
| 117 | | } |
| 118 | | |
| 119 | | return $segment_array_assoc; |
| | 105 | return $this->build_array(self::$segments, $offset, $associative); |
| 131 | | $segment_array = self::$rsegments; |
| 132 | | array_unshift($segment_array, 0); |
| 133 | | $segment_array = array_slice($segment_array, $offset + 1, $this->total_segments(), TRUE); |
| 134 | | |
| 135 | | if ( ! $associative) |
| 136 | | return $segment_array; |
| 137 | | |
| 138 | | $segment_array_assoc = array(); |
| 139 | | |
| 140 | | foreach (array_chunk($segment_array, 2) as $pair) |
| 141 | | { |
| 142 | | $segment_array_assoc[$pair[0]] = isset($pair[1]) ? $pair[1] : ''; |
| 143 | | } |
| 144 | | |
| 145 | | return $segment_array_assoc; |
| | 117 | return $this->build_array(self::$rsegments, $offset, $associative); |
| 157 | | $argument_array = self::$arguments; |
| 158 | | array_unshift($argument_array, 0); |
| 159 | | $argument_array = array_slice($argument_array, $offset + 1, $this->total_arguments(), TRUE); |
| 160 | | |
| 161 | | if ( ! $associative) |
| 162 | | return $argument_array; |
| 163 | | |
| 164 | | $argument_array_assoc = array(); |
| 165 | | |
| 166 | | foreach (array_chunk($argument_array, 2) as $pair) |
| 167 | | { |
| 168 | | $argument_array_assoc[$pair[0]] = isset($pair[1]) ? $pair[1] : ''; |
| 169 | | } |
| 170 | | |
| 171 | | return $argument_array_assoc; |
| | 129 | return $this->build_array(self::$arguments, $offset, $associative); |
| | 130 | } |
| | 131 | |
| | 132 | /** |
| | 133 | * Creates a simple or associative array from an array and an offset. |
| | 134 | * Used as a helper for (r)segment_array and argument_array. |
| | 135 | * |
| | 136 | * @param array array to rebuild |
| | 137 | * @param integer offset to start from |
| | 138 | * @param bool create an associative array |
| | 139 | * @return array |
| | 140 | */ |
| | 141 | public function build_array($array, $offset = 0, $associative = FALSE) |
| | 142 | { |
| | 143 | // Prevent the keys from being improperly indexed |
| | 144 | array_unshift($array, 0); |
| | 145 | |
| | 146 | // Slice the array, preserving the keys |
| | 147 | $array = array_slice($array, $offset + 1, count($array) - 1, TRUE); |
| | 148 | |
| | 149 | if ($associative === FALSE) |
| | 150 | return $array; |
| | 151 | |
| | 152 | $associative = array(); |
| | 153 | foreach (array_chunk($array, 2) as $pair) |
| | 154 | { |
| | 155 | // Add the key/value pair to the associative array |
| | 156 | $associative[$pair[0]] = isset($pair[1]) ? $pair[1] : ''; |
| | 157 | } |
| | 158 | |
| | 159 | return $associative; |