$string在common.php中没有显示


$string is not showing in common.php

假设我有两个文件。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上帮助我。谢谢大家!