0

我正在尝试使用 php 变得更高级,并且我拿起了 Michael Peacock 所著的《PHP 5 Social Networking》一书。虽然这本书看起来很有趣,但它并没有涉及到代码的细节。我想弄清楚的功能是,

    public function getURLData()
{
    $urldata = ( isset( $_GET['page'] ) ) ? $_GET['page'] : '' ;

    $this->urlPath = $urldata;

    if( $urldata == '' )
    {
        $this->urlBits[] = '';
        $this->urlPath = '';
    }
    else
    {
        $data = explode( '/', $urldata );

        while ( !empty( $data ) && strlen( reset( $data ) ) === 0 )
        {
            //NOTES: php array_shift — Shift an element off the beginning of array
            array_shift( $data );
        }


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

        $this->urlBits = $this->array_trim( $data );
    }
}

这是一个更大的类的一部分,$_GET['page'] 是这样的:relationships/mutual/3。我的主要问题是其他部分发生了什么。我认为它正在删除任何空数组索引正在发生什么,但我也对此提出质疑。

任何帮助,将不胜感激。

编辑:添加了也是类的一部分的 array_trim 函数

    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;
}
4

1 回答 1

1
    public function getURLData()
{

获取'page',这个数据可以通过$_GET从url获取:例如:http ://mysite.com/?page=contact

如果 'page' 已设置,则分配给 $urldata,否则 $urldata=''

    $urldata = ( isset( $_GET['page'] ) ) ? $_GET['page'] : '' ;

    $this->urlPath = $urldata;

    if( $urldata == '' )
    {
        $this->urlBits[] = '';
        $this->urlPath = '';
    }
    else
    {

现在正在创建一个数组,其中 $urldata 中的所有子字符串均由“/”分割

        $data = explode( '/', $urldata );

如果数组 $data 不为空(否则访问不存在的元素会引发异常)或第一个元素的长度等于 0,则从数组中删除第一个元素。

        while ( !empty( $data ) && strlen( reset( $data ) ) === 0 )
        {
            //NOTES: php array_shift — Shift an element off the beginning of array
            array_shift( $data );
        }

如果数组 $data 不为空(否则访问不存在的元素会引发异常)或最后一个元素的长度等于 0,则从数组中删除最后一个元素。

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

array_trim 是一个自定义函数,不确定是什么,但也可能会进行某种修剪

        $this->urlBits = $this->array_trim( $data );
    }

}

于 2013-05-19T19:45:26.207 回答