我从数据库中获得了一系列用户(我在PHP中工作,在Sublime中使用CodeIgniter)
我有一个视图,有一个显示所有用户的选项,所以在我看来,在顶部,我有这个代码(假设数组有3个项目):
<?php
$optionsUsers = array();
$qtyUsers = count($users); -->
if($qtyUsers > 0){
$optionsUsers[0]['name'] = 'Choose an option';
for($i=0; $i < $qtyUsers; $i++){
$optionsUsers[$i]['id'] = $users[$i]["userId"];
$optionsUsers[$i]['name'] = $users[$i]["username"];
}
}
?>
然后,在选择部分,我有这个:
<select id="cursadaUsuario">
<?php
$qtyOptionsUsers = count($optionsUsers);
if($qtyOptionsUsers>0){
for($i=0; $i<$qtyOptionsUsers; $i++){
if($i == 0){
echo '<option value="0" disabled selected>Please select an option</option>';
}else{
echo '<option value="'.$optionsUsers[$i]['id'].'">'.$optionsUsers[$i]['name'].'</option>';
}
}
}else{
echo '<option value="">There are no options available</option>';
}
?>
</select>
我已经在[0]字符串&#34中分配给$ optionsUsers数组;选择一个选项&#34;因为在select中迭代THAT ARRAY时,我想将它显示为禁用,并像往常一样迭代其余的元素
问题是数组$ users从0开始 - &gt;我已经用foreach检查了它,所有用户显示实际上都在那里:
foreach ($users as $key => $value){
print_r($users);
});
但是我希望[0]成为要显示的文本,&#34;选择你的选项&#34;,所以如果我将文本分配给[0],则数组$ users中的第一项永远不会显示:( (在这个例子中,它将迭代文本和2个项目,而不是3)
如果我将文本删除到[O],并且只是迭代数组,所有用户都会正确显示,没有人丢失,但这意味着......没有文字可以告诉&#34;选择一个选项&#34 ; :/
我希望它看起来像这样 - &gt; http://www.hkvstore.com/phpreportmaker/doc/images/dropdownselect.png,所以我想要文字&#34;选择你的选项&#34;显示和禁用,然后是数组的元素,在我的例子中,是一个用户列表。
注意:我想继续使用&#39; for&#39;环。 注意2:这个(Add option selected disabled in PHP)有点类似于我想要实现的目标,但是,我仍然认为我只能更改密钥并将自己的密钥分配给用户列表,即可被更改,添加,删除等..:/
想法?提前致谢! :)
答案 0 :(得分:1)
除非我不理解你,否则它与&#34;没有可用的选项相同&#34;选项 - 它属于循环之外:
if ($qtyOptionsUsers > 0) {
echo '<option value="0" disabled selected>Please select an option</option>';
for ($i = 0; $i < $qtyOptionsUsers; $i++) {
echo '<option value="'.$optionsUsers[$i]['id'].'">'.$optionsUsers[$i]['name'].'</option>';
}
} else {
echo '<option value="">There are no options available</option>';
}
答案 1 :(得分:1)
你需要从索引1而不是从0索引推送用户数据。尝试下面的代码来修复选择选项
for($i=0; $i <= $qtyUsers; $i++){
$optionsUsers[$i+1]['id'] = $users[$i]["userId"];
$optionsUsers[$i+1]['name'] = $users[$i]["username"];
}