[英]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.