假设我有两个文件。1是常见的,加载所有的设计和东西,一个是索引。
我要做的是像这样设置一个$ in索引:
<?
$SubId3 = 'test';
include "../../common.php";
?>
然后我想要一些类似
的东西<?=$SubId3; if (empty($SubId3)) { echo 'homepage'; } ?>
我似乎无法使这个工作。意思是如果我这样设置。索引永远不会显示"test"。
我做错了什么?我想这样做,因为只有某些文件将包含字符串$SubId3,以测试某些页面上的某些东西,而不是其他(通过将$SubId3 = 'test';
添加到特定的文件)
注意,<?=
是输出的简写(将<?=
视为<?php echo
),并且不执行任何其他类型的逻辑或代码。
然而,也可以这样使用三元操作符:
<?= empty($SubId3) ? 'homepage' : $SubId3; ?>
这基本上相当于:
<?php
if (empty($SubId3)) {
echo 'homepage';
}
else {
echo $SubId3;
}
?>
所以<?=
简写应该只用于传递一个简单的变量或一个三元表达式给它;其他内容应使用通用的<?php
标签。
这里是Alex的一个测试用例(在评论中),因为我可以用PHP 5.4.12运行上面的代码,但是他似乎不能。
common.php
<?= empty($SubId3) ? 'homepage' : $SubId3; ?>
index.php(然后访问此文件)
<?php
$SubId3 = 'test'; // <-- Comment this out for the "homepage" output
include 'common.php';
我认为这
<?=$SubId3; if (empty($SubId3)) { echo 'homepage'; } ?>
应为
<?php $SubId3; if (empty($SubId3)) { echo 'homepage'; } ?>
<?=?> is short for <?php echo?>
这行不通:
<?=$SubId3; if (empty($SubId3)) { echo 'homepage'; } ?>
如果你想打印一些东西,你只能在一个块中使用变量,在另一个块中使用If。
<?=$SubId3?>
:
<?php if(empty($SubId3)) { echo 'homepage'; } ?>
尝试一下<?php
/* echo $SubId3; */
if (empty($SubId3)) {
echo 'homepage';
} else {
echo $SubId3;
}
?>
考虑使用不同的编码风格。PHP中一般有三种变体:
- 仅PHP代码
- HTML文件只有一些回声
- 混合PHP和HTML
首先使用echo
输出HTML的每一个比特。
Second意味着在HTML文件的顶部包含一个PHP脚本,并调用适当的函数/在模板中插入文本。这样你就可以把HTML和PHP分开编辑了。
第三种方法有时使代码难以读和复杂,但编写起来很快。
<?php if($something) {
while($otherthing) { ?>
<B>text=<?=$index ?></B>
<?php }} ?>
仅供思考。
我找到答案了,谢谢大家的帮助。
我需要在PrintHeader中这样设置:
<?
include "../../common.php";
printHeader('BlogNr1', 'BlogNr2', 'BlogNr3');
?>
索引必须是这样的:
<?
include "../../common.php";
printHeader('BlogNr1', 'BlogNr2', 'BlogNr3');
?>
有人在skype上帮助我。谢谢大家!