Как я могу изменить цикл «foreach» ниже, чтобы я мог присвоить значение «ключ» $ myradiooption массива как «значение» для каждого ввода вместо значения «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;
Я думаю, что вы ищете:
foreach ($value['options'] as $key=>$option)
Теперь вы можете получить доступ к ключу как $key
, а опция как $option
Если вы хотите получить доступ к ключу массива в цикле foreach, вы используете следующий синтаксис:
foreach ($array as $key => $value) { ... }
Ссылки: foreach
в документации PHP
Если вы хотите извлечь пары ключ / значение из ассоциативного массива, просто используйте …
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>
Это должно объяснить это довольно хорошо:
http://www.tech-recipes.com/rx/295/php-syntax-iterate-over-an-associative-array/