php-html语法错误


php html syntax error

我正在尝试将嵌入在html中的php代码转换为嵌入html代码的php代码。我的IDE出现语法错误。有人能帮忙吗,谢谢。

html/php(工作):

    <select name="products">
                        <option value="select">Select</option>
                        <option value="product1" <?php if (!isset($updatebtn_clicked)){ echo @$product_list['product1']; }elseif ($_POST['products'] == $product_name[0]){ echo 'selected="selected"' ;} echo
                        '>'. $product_name[0]. '</option>' ?> </select>

以上是我的下拉列表中单个项目的片段。他们只是不断重复所有的产品,这是有效的。

php/html(无法工作):

<?php
        $select = '<select name="products">
               <option value="select">Select</option>
                value="'.$product_name[0].'"'. 
                if (!isset($updatebtn_clicked))
                { echo @$product_list[$product_name[1]]; }elseif ($_POST['products'] == $product_name[1]){ echo 'selected="selected"' ;} echo'>'. $product_name[1]. '</option></select>';
?>

以上操作在第一个if语句处生成语法错误。我只是不明白为什么:/

第二个是尝试"将if语句附加到字符串"。你不能那样写。

试试这个:

<?php
    $select = '<select name="products">
           <option value="select">Select</option>
            value="'.$product_name[0].'"';   // <- Finish assignment here
    if (!isset($updatebtn_clicked))
    { 
        $select = $select . @$product_list[$product_name[1]]; 
    }
    elseif ($_POST['products'] == $product_name[1])
    { 
        $select = $select . 'selected="selected"';
    }
    $select = $select . '>'. $product_name[1]. '</option></select>';
    echo $select;
?>

您尝试做的第一件事和第二件事之间的区别是:第一件事输出混合PHP的HTML。PHP解释器将用echo语句的输出替换PHP代码。

第二种方法是将所有HTML放入一个变量中。然而,在那里,您不能将PHP和HTML混合使用。您一直处于PHP脚本的范围内,因此必须编写正确的PHP。声明

$select = 'Hello ' . if (condition) echo 'foo';

不是正确的PHP代码,而

$select = 'Hello ';
if (condition) $select = $select . 'foo';

是正确的PHP语法。

编辑
顺便说一句:你发布的第二个样本(我修改了它)没有输出有效的第二option!它应该是:

    $select = '<select name="products">
           <option value="select">Select</option>
           <option value="'.$product_name[0].'"';   // <- Finish assignment here

试试这个:

<?php
$select = "
    <select name='products'>
        <option value='select'>Select</option>
        <option value='product1' ".( (!isset($updatebtn_clicked)) ? @$product_list['product1']  : "selected='selected'").">".$product_name[0]."</option>
    </select> 
";
?>