0

好的,所以基本上我正在阅读这段源代码并且不了解特定区域的目的。

class URL_Processor
{
    private static $urlPath;
    private static $urlBits = array();

    /*
Gets data from the current URL
@return Void
*/
public function getURLData()
{
    $urldata = (isset($_GET['page'])) ? $_GET['page'] : '' ;
    self::$urlPath = $urldata;
    if( $urldata == '' )
    {
        self::$urlBits[] = 'home';
        self::$urlPath = 'home';
    }
    else
    {
        $data = explode( '/', $urldata );
        while ( !empty( $data ) && strlen( reset( $data ) ) === 0 ) 
        {
            array_shift( $data );
        }
        while ( !empty( $data ) && strlen( end( $data ) ) === 0) 
        {
            array_pop($data);
        }
            self::$urlBits = $this->array_trim( $data );
        }
    }

   private function array_trim( $array ) 
   {
        while ( ! empty( $array ) && strlen( reset( $array ) ) === 0) 
        {
            array_shift( $array );
        }

        while ( !empty( $array ) && strlen( end( $array ) ) === 0) 
        {
            array_pop( $array );
        }

        return $array;
    }
}

因此,基本上根据我的理解,getURLData 方法中带有“array_shift”的两个 while 循环清空了数组,但根据我的逻辑,第二个 while 循环甚至无法清空任何内容,因为第一个 while 循环已经完成了。

然后是getURLData方法的最后一行

self::$urlBits = $this->array_trim( $data );

做同样的事情但是如果传入的参数已经是空的怎么办?

很困惑!!!

4

1 回答 1

1

第一个 while 循环删除数组中字符串长度为零的所有前导元素,第二个循环对尾随元素执行相同的操作。reset($array) 将指向第一个元素, end($array) 指向最后一个元素。

为什么他第二次把它弄糊涂了?我不知道。

于 2013-08-13T01:29:56.910 回答