Php 如果没有遵循正确的程序?

Php 如果没有遵循正确的程序?,php,if-statement,Php,If Statement,我正在开发一个内容管理系统,到目前为止还不错 我正在尝试让系统与维护模式系统一起工作。 以下是脚本中显示维护内容的代码: if ($maintenance['value'] == "1") {?> <div id="content"> <div id="errmsg"> <?php echo $maintenance['notes']; ?> </div> </div> <?

我正在开发一个内容管理系统,到目前为止还不错

我正在尝试让系统与维护模式系统一起工作。 以下是脚本中显示维护内容的代码:

if ($maintenance['value'] == "1") {?>
    <div id="content">
     <div id="errmsg">
      <?php echo $maintenance['notes']; ?>
     </div>
    </div>
<? } else {?>

   <h1><?php echo $title; ?></h1>
   <hr /><br />
   <div id="content">
    <?php echo $contents; 
     if (!$content) { 
      include    ('includes/error/404.php');}?>
   </div>               
<? } ?>
if($maintenance['value']==“1”){?>


我可以验证$maintenance['value']变量是否正常工作,但是脚本的这一部分没有正常工作。该值当前设置为1,但它仍然在else中显示内容


有什么想法吗?

看来您在
else
语句后面有一个额外的}。

您可以尝试使用不同的语法。您可以使用

<?php if ($maintenance['value'] == "1") : ?>

    <!-- HTML STUFF HERE -->

<?php ELSE: ?>

    <!-- more html stuff here -->

<?php ENDIF; ?>

根据我的经验,PHP解析器可以更好地解析这一点


另请参见

倒车怎么样

if (!isset($maintenance['value'])) { ?>

// echo normal non-maintenance stuff

<?php } else { ?>

// display maintenance stuff

<?php

}
“;查看原因

另外,仅仅因为我在第一次运行
if/else
语句时表现出典型的残暴和健忘症,您确定在实时代码中使用的是比较运算符而不是赋值运算符吗

针对OP的以下评论进行了后期编辑:


这可能不起作用,数据库中的值为1或0。我应该在OP中更清楚地说明这一点。 如果您知道$maintenance['value']是布尔值,1或0,那么为什么不使用这些知识并制作:

<?php if ($maintenance['value']) : ?>
if($maintenance['value']==“0”){?>
//回显正常的非维护内容

我支持Cassy提出的符号。我的评论:

我不确定PHP是如何处理数据类型的,但我只是检查了一下,根据这一点,即使
$maintenance['value']
包含整数
1
(您将其与字符串
“1”
进行比较),您的表达式也应该计算为true

另一个值是什么,
$maintenance['value']
可以保存?“0”?如果是这样,为什么不将
TRUE
FALSE
分配给变量,以便保存?无论如何,您可以试着这样编写表达式:


如果
$maintenance['value']
包含以下任何值,则计算结果为
TRUE

  • 真的
  • 一,
  • 任意整数!=0
  • “1”
  • 任何字符串!=“0”

正如其他人所说,您正在尝试比较int和string。您可以使用“1”或“1”或“0”将所有内容更改为“1”“或0。另一种更好的方法是使用特定于类型的比较运算符,如
==
!==
来匹配值和类型;并使用布尔术语true和false使您和解释器痛苦地明白您正试图做什么


您还可以尝试使用
define(“维护”,true)
例如,确保值不会在脚本执行过程中发生更改。尽管如此,这可能会使更改服务器端设置更加困难,除非您向文件写入新值。尽管如此,在服务器尝试为另一个客户端读取文件时,您可能会遇到写入问题…

为什么有两个
 }
in当关闭您的
else
语句时?复制时一定是一个工件,我看不到其他结束括号。因此,我建议不要使用短php标记。使用full。感谢Joel,我通常在将代码移动到生产环境之前转换为full:)有趣的是,这没有做任何事情:s可能不起作用,数据库中的值为1或0。我应该在行动中说得更清楚。
<?php if ($maintenance['value']) : ?>