我有一个选择下拉列表,我有我想要被选中的值,所以我有一个比较来获得该值,并使其成为被选中的选项。问题是,当我在调试器中查看代码时,代码似乎经过If方面,然后是Else方面,对选项表中的每个项目进行比较。我确信这是我的代码中有些愚蠢的地方,但我无法发现它。也许对某些人来说是显而易见的。下面是代码
<select name="cust_code" id="cust_code">
<?php foreach ( $customers as $option ) : ?>
<? if ($option->refno == $cust_code){
?>
<option value="<?php echo $option->refno; ?>" selected="selected"><?php echo $option->company; ?></option>
<?
}
else {
?>
<option value="<?php echo $option->refno; ?>"><?php echo $option->company; ?></option>
<?
}
?>
<?php endforeach; ?>
</select>
必须使用==
进行比较(或使用===
进行精确比较)。使用=
给赋值,并将求值为true。
让你的生活更简单。
不需要一个全新的输出,只需根据if条件设置selected
参数:
<?php foreach ( $customers as $option ) :
// Create the selected parameter if the values match
$selected = ($option->refno == $cust_code) ? ' selected' : '';
?>
<option value="<?php echo $option->refno; ?>"<?php echo $selected; ?>><?php echo $option->company; ?></option>
<?php endforeach; ?>
最后,如果在更改为==
之后问题仍然存在,那么您应该在循环中输出比较变量的内容:
echo '<br>' . $option->refno . ' == ' . $cust_code;
这将允许您查看发生了什么并调试问题。
对于比较,您应该使用==
(比较)而不是=
(赋值)