Вложите оператор php if / else в переменную - PullRequest
0 голосов
/ 06 ноября 2018

Я хочу добавить оператор if / else в include, но он не работает. Результатом является заявление, опубликованное в виде простого текста.

См. эту страницу .

Основной файл 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, но я не знаю, как настроить оператор if / else в include, чтобы он работал. Если вы поместите оператор if / else встроенным в файл sample.php, он все равно будет работать.

Ответы [ 5 ]

0 голосов
/ 07 ноября 2018

Я попробовал использовать функцию, но это не сработало. Я решил это, поместив оператор php if / else в другой файл, а затем вызвал метод include, который на данный момент отлично работает. Я постараюсь заставить эту функцию работать, так как это кажется более профессиональным решением.

0 голосов
/ 06 ноября 2018

Я предполагаю, что вы, вероятно, используете PHP 5 и пришли из JS World. Вы не можете назначить переменную функции, как вы делаете в Javascript. Тогда лучшим решением будет следующее:

sample.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>

include.php

<?php


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


 ?>
0 голосов
/ 06 ноября 2018

Это код в строке, поэтому на самом деле не код.

Лучше всего превратить этот код в функцию

include.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>
0 голосов
/ 06 ноября 2018

PHP не работает таким образом.

Вам необходимо использовать стандартные операторы if / else, и оттуда вы можете либо вывести желаемый результат, либо связать строку с переменной, которую затем сможете использовать позже для чего угодно.

Вы можете сделать это следующим образом:

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

Еще более сексуальный подход - использовать троичный оператор, конкатенацию строк и / или использовать пользовательские функции, но по одному шагу за раз.

0 голосов
/ 06 ноября 2018

Вы не можете поместить код в строку и ожидать, что он будет выполнен. Вы могли бы использовать 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>
...