PHP数组在HTML中不显示选择列表


PHP array not showing select list in HTML

我有一个数组的状态列表,我试图让它出现在我的选择列表。我没有得到任何错误,但没有什么是显示在选择列表作为一个选项。我只是想让它循环遍历数组并在HTML中显示状态。

function statesList() {
$states = array('AL'=>"Alabama",
                'AK'=>"Alaska",
                'AZ'=>"Arizona",
                'AR'=>"Arkansas",
                'CA'=>"California",
                'WY'=>"Wyoming");
return $states;
}
$email_form = '<?php $states = statesList(); ?>
<form class="aw-contact-form" method="post" action="' . get_permalink() . '">
        <label for="cf_state">' . $label_state . '</label>
            <select name="state" id="cf_state">
                <option selected="selected"></option>
                <?php foreach($states as $key=>$value) { ?>
                <option value="<?php echo $key; ?>"><?php $value; ?></option>
                <?php } ?>
            </select>
</form>';
return $email_form;

我的语法有问题吗?任何帮助都将不胜感激。

是的语法有问题,foreach被放在字符串内,所以它被解析为字符串而不是php代码来执行。另外,$states是空的,因为它被放置在函数之外。要获得$states值,必须调用该函数。这是固定版本:

function statesList() {
$states = array('AL'=>"Alabama",
                'AK'=>"Alaska",
                'AZ'=>"Arizona",
                'AR'=>"Arkansas",
                'CA'=>"California",
                'WY'=>"Wyoming");
return $states;
}    

$email_form = '<form class="aw-contact-form" method="post" action="' . get_permalink() . '">
        <label for="cf_state">' . $label_state . '</label>
            <select name="state" id="cf_state">
                <option selected="selected"></option>';
$states = statesList();
foreach ($states as $key => $value) {
    $email_form .= '<option value="' . $key . '">' . $value . '</option>';
}
$email_form .= '</select>
</form>';
return $email_form;

有一些语法问题,但我为您清理了它们。

<html>
<head>
<title>Online PHP Script Execution</title>
</head>
<body>
<?php
function statesList() {
$states = array('AL'=>"Alabama",
                'AK'=>"Alaska",
                'AZ'=>"Arizona",
                'AR'=>"Arkansas",
                'CA'=>"California",
                'WY'=>"Wyoming");
return $states;
}
$email_form = ($states = statesList());
?>
<form class="aw-contact-form" method="post" action="hello.php">
        <label for="cf_state"><?php echo $label_state  ?> </label>
            <select name="state" id="cf_state">
                <option selected="selected"></option>
                <?php foreach($states as $key=>$state) { ?>
                <option value="<?php echo $key; ?>"><?php echo $state; ?></option>
                <?php } ?>
            </select>
</form>
<?php 
return $email_form;
?>
</body>
</html>

试试这个:

<?php 
error_reporting(0);
function statesList() {
$states = array('AL'=>"Alabama",
                'AK'=>"Alaska",
                'AZ'=>"Arizona",
                'AR'=>"Arkansas",
                'CA'=>"California",
                'WY'=>"Wyoming");
return $states;
}
$states = statesList(); 
$email_form .= '<form class="aw-contact-form" method="post" action="' . get_permalink() . '">
                <label for="cf_state">' . $label_state . '</label>
                <select name="state" id="cf_state">
                <option selected="selected"></option>';
                foreach($states as $key=>$value) { 
                $email_form .= '<option value="'.$key.'">'.$value.'</option>';
                 } 
            $email_form .= '</select>
            </form>';
return $email_form;
?>