Echo HTML with PHP inside


Echo HTML with PHP inside

请帮我把它变成动态使用echo与HTML和PHP使用数组范围

    <?php
       $arr = array(1, 2, 3, 4);
       $selected='<img src="assets/images/resev.png" class="img-circle" width="40" height="40" />';
       $aval='<img src="assets/images/aval.png" class="img-circle" width="40" height="40" />';
       foreach ($arr as &$value) {
        <button class="btn btn-default" id=$value <?php if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))){ ?> disabled <?php   } ?> >
        <?php if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) {
         echo $selected ;
        }
        else {
          echo $aval ;
        }
      ?>$value
    </button>

到目前为止我已经做过了

<?php
  $arr = array(1, 2, 3, 4);
  foreach ($arr as &$value) {
      echo '<button class="btn btn-default" id='. $value if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))){ disabled }. '> //line 84
      </button>' ;
  }
?>

我已经得到

解析错误:解析第84行xyz.php中的错误

为了避免将来出现这样的问题和错误,您必须将代码块分开:

  1. 定义值
  2. 计算动态值
  3. <
  4. 包括模板/gh><
  5. 评估模板/gh>

:

index . php内容
<?php
// define
$a = 1;
$b = 2;
$c = null; // value for fallback
// calculate
$c = $a + $b;
// include template
include_once 'template.phtml';

模板。php内容(求值模板)

<div>
    <p><?= $a ?></p>
    <p><?= $b ?></p>
    <?php if ($c !== null) { ?>
        <p><?= $c ?></p>
    <?php } else { ?>
        <p>$c variable has not calculated</p>
    <?php } ?>
</div>

您可以按以下方式操作-

<?php
  $arr = array(1, 2, 3, 4);
  foreach ($arr as &$value) {
    $disabled = '';
    if(isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) {
        $disabled = 'disabled';
    }  
    echo '<button class="btn btn-default" id='.$value.' '.$disabled.'>Test Button</button>' ;
  }
?>

我不认为你可以在你的echo函数调用中调用if语句,你需要将它们彼此分开,可以尝试这样做:

echo '<button class='"btn btn-default'" id='. $value;
if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) 
{
  echo 'disabled';
} 
echo '></button>' ;

使用echo语句组合html和php会很快变得混乱和不可读。

阅读控制结构的替代语法以及三元操作符。应用这两种约定,您的代码看起来更像这样:

<?php
    $arr = array(1, 2, 3, 4);
    foreach ($arr as &$value) : ?>
    <button class="btn btn-default" id="<?=$value;?><?=((isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons'])))?' disabled':''?>">
        <?php if (isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) : ?>
            <img src="assets/images/resev.png" class="img-circle" width="40" height="40" />
        <?php else : ?>
            <img src="assets/images/aval.png" class="img-circle" width="40" height="40" />
        <?php endif; ?>
    </button>
<?php endforeach; ?>

解析错误是由于您试图用echo语句链接if语句($value if…),并且在if{}语句中也只是使用disabled而不是echo 'disabled'

(代表OP发布)

工作代码:

       <?php
          $arr = array(1, 2, 3, 4, 5);
          foreach ($arr as &$value) {
            $disabled = '';
            if(isset($_SESSION['buttons']) && (in_array($value, $_SESSION['buttons']))) {
                $disabled = 'disabled';
                $image = $selected ;
            }
            else {
              $disabled = '';
              $image = $aval ;
            }
            echo '<button class="btn btn-default" id='.$value.' '.$disabled.'>'
            .$image.' '.$value.'</button>' ;
          }
        ?>

除了可读性之外,这个问题还可以这样修复:

$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    echo '<button class="btn btn-default" id="'. $value  . '" ' . ((isset($_SESSION['buttons']) && in_array($value, $_SESSION['buttons'])) ? 'disabled="disabled"' : '') . '>test</button>';
}

这里我使用了所谓的ternary operator

是这样的,但是更清楚一些:

$arr = array(1, 2, 3, 4);
foreach ($arr as &$value) {
    echo '<button class="btn btn-default" id="'. $value  . '"
    ' . (
            (isset($_SESSION['buttons']) && in_array($value, $_SESSION['buttons']))
                ? 'disabled="disabled"' : ''
        ) . '
    >test</button>';
}

三元操作符类似于if语句,但通常用于内联内容。

语法如下:

$myVar = (expression ? true : false);

这里有一个例子,当一个数字是1时,如何得到"Woo!"

$number = 1;
$wooOrNe = ($number === 1 ? "Woo!" : "Ne."); // Woo!