使用PHP内部回显HTML

时间:2016-09-12 05:31:16

标签: php html

请帮助我使用带有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中解析错误

6 个答案:

答案 0 :(得分:2)

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

  1. 定义值
  2. 计算动态值
  3. 包含模板
  4. 评估模板
  5. 像这样:

    index.php内容

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

    template.phtml内容(评估模板)

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

阅读alternative syntax for control structures以及ternary operator。应用这两种约定,您的代码看起来更像是:

<?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'而不是sscanf声明。

答案 3 :(得分:1)

您可以通过以下方式进行操作 -

<?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>' ;
  }
?>

答案 4 :(得分:1)

(代表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>' ;
          }
        ?>

答案 5 :(得分:1)

除了可读性之外,问题可以修复如下:

$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);

这是一个如何获得“Woo!”的例子。当数字为1时。

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