php变量赋值混乱

时间:2013-06-20 02:10:05

标签: php

在读一本关于php的书时,我突然发现了一段逻辑上对我没有意义的代码。代码行是类函数的一部分:

private function replaceTags( $pp = false ) {
    //get the tags in the page
    if( $pp == false ) {
        $tags = $this->page->getTags();
    } else {
        $tags = $this->page->getPPTags();
    }
    //go through them all
    foreach( $tags as $tag => $data ) {
        //if the tag is an array, then we need to do more than a simple find and replace!
        if( is_array( $data ) ) {
            if( $data[0] == 'SQL' ) {
                //it is a cached query...replace tags from the database
                $this->replaceDBTags( $tag, $data[1] );
            } elseif( $data[0] == 'DATA' ) {
                //it is some cahched data...replace tags from cached data
                $this->replaceTags( $tag, $data[1] );
            }
        } else {
            //replace the content
            $newContent = str_replace( '{' . $tag . '}', $data, $this->page->setContent( $newContent ) );
            $this->page->setContent( $newContent );
        }
    }
}

对我来说没有意义的具体路线是:

$newContent = str_replace( '{' . $tag . '}', $data, $this->page->setContent( $newContent ) );

当它没有值时,如何将变量“$ newContent”传递给“setContent($ newContent)”?

有任何解释吗?

4 个答案:

答案 0 :(得分:0)

该语句正在for循环中执行,因此$newContent 将该值保存在另一个循环中以供使用。

在第一次执行中,$newContent将为空,但在下一次迭代中,它将具有要替换的值。

foreach( $tags as $tag => $data ) {
    if ....
    } else {
        //replace the content
        $newContent = str_replace( '{' . $tag . '}', $data, $this->page->setContent( $newContent ) );
     // ^
     // Now next time when the loop executes again it will have a 
     // $newContent to process.

        $this->page->setContent( $newContent );
    }
}

答案 1 :(得分:0)

为什么你认为这个变量“$ newContent”没有值? 实际上,它设置在上面一行。

无论如何,你可以将一个空变量传递给一个函数。没问题

答案 2 :(得分:0)

最后一个参数是回调函数,因此在赋值后调用

答案 3 :(得分:0)

如果尚未分配变量,则将其视为包含null。如果启用了警告,则会导致记录“未定义变量”警告,但脚本仍将运行。最有可能的是,setContent()函数检查其参数是否为null,如果是,则只返回当前内容而不修改它。

但这段代码似乎对我很怀疑。它每次通过循环调用setContent()两次。第一行应该只需要使用getContent(),它不需要参数。