在读一本关于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)”?
有任何解释吗?
答案 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()
,它不需要参数。