Как получить доступ к «ключу» и «значению» из массива, переданного в цикл for? - PullRequest
4 голосов
/ 24 января 2011

Как я могу изменить цикл «foreach» ниже, чтобы я мог назначить значение «key» массива $ myradiooption в качестве «значения» для каждого входа вместо значения «option» массива, как я сейчас делаю (я все еще хотите отобразить значение "option" массива в качестве метки)?

$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 ),

    ...etc}

//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;

Ответы [ 5 ]

6 голосов
/ 24 января 2011

Я думаю, что вы ищете это:

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

Теперь вы можете получить доступ к ключу как $key, а опция как $option

5 голосов
/ 24 января 2011

Если вы хотите получить доступ к ключу массива в цикле foreach, используйте следующий синтаксис:

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

Ссылки: foreach в документации PHP

4 голосов
/ 24 января 2011

Если вы хотите извлечь пары ключ / значение из ассоциативного массива, просто используйте ...

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

... в соответствии с страницей руководства по PHP foreach .

1 голос
/ 24 января 2011

все это можно изменить на что-то подобное для лучшей читаемости ...

<?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>
0 голосов
/ 24 января 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...