繁体   English   中英

在变量中嵌套 php if/else 语句

[英]Nest php if/else statement in variable

我想在包含中放置一个 if/else 语句,但它不起作用。 结果是以纯文本形式发布的声明。

请参阅此页面

基础文件sample.php

<?php include "include.php";?>
<?php $name = "Menu 1";?>
<html>
<body>      
<?php echo $showMenu ;?>    
</body>
</html>

包含文件 include.php

<?php
$showMenu='if($name=="Menu 1")
{echo "Menu 1";}
else
{echo "Menu 2";}';
?>

如果我是对的,问题出在 include.php 文件中,但不知道如何调整 include 中的 if/else 语句以使其工作。 如果您将 if/else 语句内联在 sample.php 文件中,它仍然可以工作。

您不能将代码放入字符串中并期望它被执行。 可以使用exec来执行一个字符串,但是每个人都会告诉你不要使用exec除非你完全理解它的影响。

你可以在上面做的是:

if ($name == 'Menu 1') {
    $showMenu = 'Menu 1';
} else {
    $showMenu = 'Menu 2';
}

那么sample.php必须看起来像这样:

<?php 
    $name = 'Menu 1';
    include 'include.php';
?>
<html>
  <body>
    <?= $showMenu ?>
  </body>
</html>

那是字符串中的代码,所以不是真正的代码。

将代码变成函数是更好的做法

包含.php

<?php
function showMenu($name)
    if($name=="Menu 1") {
        $ret = "Menu 1";
    }else{
        $ret = "Menu 2";
    }
    return $ret;
}
?>

然后在包含该文件的任何代码中,您都可以调用该函数。 这也意味着代码在您实际调用它之前不会运行,而不是仅仅因为包含文件包含在另一个脚本中而运行它。

<?php 
include "include.php";
?>
<html>
<body>      
<?php echo showMenu("Menu 1")?>    
</body>
</html>

PHP 不能以这种方式工作。

您需要使用标准的 if/else 语句,然后您可以回显您想要的结果或将字符串连接到一个变量,然后您可以稍后将其用于任何您想要的。

你可以这样做作为一个基本的起点:

<?php
if ($name == "Menu 1")
{
    echo "Menu 1";
}
else
{
    echo "Menu 2";
}
?>

一种更性感的方法是使用三元运算符、字符串连接和/或使用自定义函数,但一次一个步骤。

我假设您可能正在使用 PHP 5 并且您来自 JS World。 您不能像在 Javascript 中那样将变量分配给函数。 那么最好的解决方案如下:

示例.php

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>

    <?php include('include.php'); ?>

    <?php show("Menu 1"); ?>

  </body>
</html>

包含.php

<?php


function show($string){
  if($string == "Menu 1"){
    echo "Menu 1";
  }else{
    echo "Menu 2";
  }
}


 ?>

我尝试了使用函数的建议,但是没有奏效。 我通过将 php if/else 语句放到另一个文件中解决了这个问题,然后调用了包含,这对于现在来说很完美。 我会尝试使该功能正常工作,因为这似乎是一个更专业的解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM