【问题标题】:Dealing with starting index in array - PHP处理数组中的起始索引 - PHP
【发布时间】:2017-09-08 10:53:13
【问题描述】:

我从数据库中获得了一组用户(我在 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] 中的 $optionsUsers 数组,因为在选择中迭代 THAT ARRAY 时,我想将其显示为禁用并像往常一样迭代其余元素

问题是数组 $users 从 0 开始 --> 我用 foreach 检查了它,所有用户显示实际上都在那里:

foreach ($users as $key => $value){
      print_r($users);
   });

但我希望 [0] 成为要显示的文本,“选择您的选项”,所以如果我将文本分配给 [0],则数组 $users 中的第一项永远不会显示:((在此示例中,它会迭代文本和 2 个项目,而不是 3)

如果我将文本删除到 [O],并且只是迭代数组,所有用户都会正确显示,没有人丢失,但这意味着......没有文本告诉“选择一个选项”:/

我希望它看起来像这样 --> http://www.hkvstore.com/phpreportmaker/doc/images/dropdownselect.png,所以我希望显示和禁用文本“选择你的选项”,然后是数组的元素,在我的例子中是用户列表.

注意:我想继续使用“for”循环。 注意2:这(Add option selected disabled in PHP)有点类似于我想要实现的目标,但我认为我不能只更改密钥并将我自己的密钥分配给用户列表,可以更改,添加,删除等。:/

想法?提前致谢! :)

【问题讨论】:

    标签: php arrays for-loop html-select


    【解决方案1】:

    除非我不理解你,否则它与“无可用选项”选项相同——它属于循环之外:

    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>';   
    }
    

    【讨论】:

    • 哦,是的!太感谢了!我怎么没看到!? xD 谢谢!正是我想要的! :D
    【解决方案2】:

    您需要从索引 1 而不是从 0 索引推送用户数据。尝试下面的代码来修复选择选项

    for($i=0; $i <= $qtyUsers; $i++){
       $optionsUsers[$i+1]['id'] = $users[$i]["userId"];
       $optionsUsers[$i+1]['name'] = $users[$i]["username"];
    }
    

    【讨论】:

    • 嗨!谢谢!我实际上选择了上一个答案,但出于好奇,我也会测试你的答案哈哈,我没想过! :o
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-07
    • 2011-06-17
    • 2010-09-10
    • 2014-04-06
    相关资源
    最近更新 更多