【问题标题】:How to access "key" and "value" from an array passed to a for loop?如何从传递给 for 循环的数组中访问“键”和“值”?
【发布时间】:2011-01-24 16:32:02
【问题描述】:

如何更改下面的foreach 循环,以便我可以将$myradiooption 数组的key 分配为每个输入的value,而不是我现在正在做的数组的option 值(我还想回显数组的option 值作为标签)?

<?php
$myradiooptions = array(
    "grid1" => "Grid View (default)",
    "list1" => "List View (1 column)",
    "list2" => "List View (2 column)" 
  );

array(
  "name" => "Category Layout",
  "desc" => "description goes here",
  "id" => "my_category_layout",
  "type" => "radio",
  "options" => $myradiooptions )
);
//switch, case "radio":
?>
<li class="section">
  <label
    class="left"
    for="<?php echo $value['id']; ?>">
      <?php echo $value['name']; ?>
  </label>
  <?php
    $count=1;
    foreach ($value['options'] as $option) {
  ?>
  <input
    type="radio"
    name="<?php echo $value['id']; ?>"
    id="<?php echo $count; ?>"
    value="<?php echo $option; ?>"
    <?php checked($option, get_settings($value['id'])); ?>
  />
  <label style="color:#666; margin:0 20px 0 5px;" for="<?php echo $count; ?>">
    <?php echo $option; ?>
  </label>
  <?php $count++;} ?>
  <label class="description" style="margin-top:-5px;">
    <?php echo $value['desc']; ?>
  </label>
</li>
<?php break;

【问题讨论】:

  • 我建议您改进格式。该代码是一个很大的混乱。使用一致的缩进和换行来尽量保持代码简洁明了...

标签: php arrays loops


【解决方案1】:

如果要在 foreach 循环中访问数组的键,请使用以下语法:

foreach ($array as $key => $value) { ... }

参考:foreach in the PHP documentation

【讨论】:

    【解决方案2】:

    我认为您正在寻找的是:

    foreach ($value['options'] as $key=>$option)
    

    现在您可以使用$key 访问密钥,使用$option 访问选项

    【讨论】:

      【解决方案3】:

      如果您想从关联数组中提取键/值对,只需使用...

      foreach ($yourArray as $key => $value) {
         ...
      }
      

      ...根据PHP foreach manual page

      【讨论】:

        【解决方案4】:

        为了更好的可读性,整个东西都可以改成这样的......

        <?php
        
        $myradiooptions = array(
                            "grid1" => "Grid View (default)", 
                            "list1" => "List View (1 column)", 
                            "list2" => "List View (2 column)" 
                          );
        
        $value = array(  
                    "name" => "Category Layout",
                    "desc" => "description goes here",
                    "id" => "my_category_layout",
                    "type" => "radio",
                    "options" => $myradiooptions 
                 );
        
        foreach($value as $key => $val)
        {
            $formHTML = "<label class='left' for='{$value['id']}'>".$value['name']."</label>";
            if(is_array($val))
            {
                $count = 1;
                foreach($val as $k => $v)
                {
                    $formHTML .= "<input type='radio' name='{$v['id']}' id='$count' value='$v' /><label style='color:#666; margin:0 20px 0 5px;' for='$count'>$v</label>";
                    $count ++;
                }
            }
            $formHTML .= "<label class='description' style='margin-top:-5px;'>".$value['desc']."</label>";
        }
        
        //switch, case "radio":
        ?>
        <li class="section">
            <?php print $formHTML; ?>
        </li>
        

        【讨论】:

          【解决方案5】:
          猜你喜欢
          • 2020-12-13
          • 1970-01-01
          • 2015-04-03
          • 2017-10-12
          • 2019-06-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多