簡體   English   中英

如何從傳遞給 for 循環的數組中訪問“鍵”和“值”?

[英]How to access "key" and "value" from an array passed to a for loop?

如何更改下面的foreach循環,以便我可以將$myradiooption數組的key value為每個輸入的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;

如果要在 foreach 循環中訪問數組的鍵,請使用以下語法:

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

參考: PHP 文檔中的foreach

我想你要找的是這個:

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

現在您可以將密鑰作為$key訪問,並將選項作為$option

如果要從關聯數組中提取鍵/值對,只需使用...

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

...根據PHP foreach 手冊頁

為了更好的可讀性,整個事情都可以改成這樣……

<?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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM