我从客户端的旧数据库中获取了一些值:
$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>';
}
}
}
答案 0 :(得分:3)
只需使用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>';
}
说明: E.G.如果$selected = "3,4"
然后explode(",",$selected)
返回array(3,4)
并in_array
检查该数组中是否存在$obj["rowid"]
,那么这意味着您将输出多个{{1}设置了属性<options
的