我从客户端的旧数据库中获取一些值,如下所示:
$query = "SELECT rowid,source FROM `".$table."`";
$result = mysql_query($query);$temp=0;$p = array();
while ($row = mysql_fetch_array($result)) {$p[$temp] = $row;$temp++;}
然后我按这样循环访问值:
// loop through all possible values
foreach ($p as $obj) {
}
在foreach循环中,我将打印<option>
元素,我想确定<option selected/>
元素。所选元素可能大于 1,因为它是多选表单。
首先,我检查$selected
值是否等于 rowid。
// check if exists equals to rowid
if ($obj["rowid"] == $selected){
$return .= '<option value="'.$obj["rowid"].'" selected>'.$obj["source"].'</option>';
}else{
$return .= '<option value="'.$obj["rowid"].'">'.$obj["source"].'</option>';
}
这工作只是查找是否$selected = "1"
(或任何一位数)
和我的问题来了,如果$selected = "3,4"
.然后我需要遍历值并在 foreach 中分隔逗号分隔的值?
这是我的完整代码:
$selected = "3,4";
$query = "SELECT rowid,source FROM `" . $table . "`";
$result = mysql_query($query);
$temp = 0;
$p = array();
while ($row = mysql_fetch_array($result)) {
$p[$temp] = $row;
$temp++;
}
// loop through all possible values
foreach($p as $obj) {
// check if exists equals to rowid
if ($obj["rowid"] == $selected) {
$return.= '<option value="' . $obj["rowid"] . '" selected>' . $obj["source"] . '</option>';
}
else {
// check if default exists with comma separated values
if (!empty($default) && strpos($selected, ',') !== false) {
$arr_values = explode(',', $selected);
// loop through comma-separated values to get the selected items
foreach($arr_values as $selected) {
if ($obj["rowid"] == $default) {
$return.= '<option value="' . $obj["rowid"] . '" selected>' . $obj["source"] . '</option>';
}
}
// $return .= '<option value="'.$obj["rowid"].'">'.$obj["source"].'</option>';
}
else {
$return.= '<option value="' . $obj["rowid"] . '">' . $obj["source"] . '</option>';
}
}
}
只需使用 in_array() + explode() 函数组合来检查字符串中是否存在rowid
selected
if (in_array ($obj["rowid"], explode(",",$selected))){
$return .= '<option value="'.$obj["rowid"].'" selected>'.$obj["source"].'</option>';
}else{
$return .= '<option value="'.$obj["rowid"].'">'.$obj["source"].'</option>';
}
解释:例如,如果$selected = "3,4"
那么explode(",",$selected)
返回array(3,4)
并in_array
检查该数组中是否存在$obj["rowid"]
',这意味着您将输出多个带有属性selected
集的<options