160 {/*{{{*/
161 private $arr = [9, 2, 20, 5, 3, 7, 4, 10, 1, 8, 6];
162
163 public function rewind(){
164 reset($this->arr);
165 }
166
167 public function current(){
168 return current($this->arr);
169 }
170
171 public function key(){
172 return key($this->arr);
173 }
174
175 public function next(){
176 return next($this->arr);
177 }
178
179 public function valid(){
180 return (false !== $this->current());
181 }
182 }/*}}}*/
183
184 class LinkNode
185 {/*{{{*/
186 public $data;
187 public $next=null;
188 public function __construct($data)
189 {
190 $this->data = $data;
191 }
192 }/*}}}*/
193
194 class singlyLinkList
195 {/*{{{*/
196 private $header = null;
197 public function __construct()
198 {
199 }
200
201 public function add($node)
202 {
203 if (is_null($this->header))
204 {
205 $this->header = $node;
206 }
207 else
208 {
209 $current = $this->header;
210 while (!is_null($current->next))
211 {
212 $current = $current->next;
213 }
214 $current->next = $node;
215 }
216 }
217
218 public function reverse()
219 {
220 if (is_null($this->header) || is_null($this->header->next))
221 {
222 return $this;
223 }
224 $pre = $this->header;
225 $current = $this->header->next;
226 $pre->next = null;
227 $next = null;
228 while (!is_null($current))
229 {
230 $next = $current->next;
231 $current->next = $pre;
232 $pre = $current;
233 $current = $next;
234 }
235 $this->header = $pre;
236 return $this;
237 }
238 }/*}}}*/
239
240 class PhpArraySort
241 {/*{{{*/
242 //$arr[] = array('age'=>5, 'sex'=>0, 'name'=>'daxia');
243 //$arr[] = array('age'=>2, 'sex'=>1, 'name'=>'xiaoming');
244 //$arr[] = array('age'=>13, 'sex'=>1, 'name'=>'daheng');
245 public function __construct()
246 {
247 $arr[] = array();
248 }
249
250 public function array2DSort1($arr)
251 {
252 if (empty($arr) || (1 == count($arr)))
253 {
254 return $arr;
255 }
256 $ageArr = array();
257 $sexArr = array();
258 foreach ($arr as $subArr)
259 {
260 $ageArr[] = $subArr['age'];
261 $sexArr[] = $subArr['sex'];
262 $nameArr[] = $subArr['name'];
263 }
264 array_multisort($ageArr, SORT_DESC, $sexArr, SORT_DESC, $arr);
265 return $arr;
266 }
267
268 public function array2DSort2($arr)
269 {
270 if (empty($arr) || (1 == count($arr)))
271 {
272 return $arr;
273 }
274 $ageArr = array();
275 foreach ($arr as $key => $subArr)
276 {
277 $ageArr[$key] = $subArr['age'];
278 }
279 asort($ageArr);
280 reset($ageArr);
281 $newArr = array();
282 foreach ($ageArr as $key => $age)
283 {
284 $newArr[$key] = $arr[$key];
285 }
286 return $newArr;
287 }
288 }/*}}}*/
289
290 class MonkeyQuestion
291 {/*{{{*/
292 public function getMonkeyOut()
293 {
294 $n = 3;
295 $m = 2;
296 $monkeys = range(1, $n);
297 $j = 1;
298 while (count($monkeys)>1)
299 {
300 $head = array_shift($monkeys);
301 if ($j%$m != 0)
302 {
303 array_push($monkeys, $head);
304 }
305 $j++;
306 }
307 return $monkeys[0];
308 }
309 }/*}}}*/
310 class FileExt
311 {/*{{{*/
312 public function getFileExt($url)
313 {
314 //scheme host path query
315 $pathInfo = parse_Url($url);
316 $baseName = basename($pathInfo['path']);
317 $arr = explode('.', $baseName);
318 return isset($arr[1]) ? $arr[1] : '';
319 }
320 }/*}}}*/
321
322 class FileDir
323 {
324 //todo
is_dir; open_dir;file=readdir;closedir
325 }326
327 class GetFileContent
328 {
329 //todo
fopen !feof fgets fclose
330 }331