2011-01-24 60 views
2

如何更改下面的「foreach」循環,以便我可以將每個輸入的$ myradiooption數組的「鍵」值分配爲「值」,而不是像我現在正在做的那樣分配數組的「選項」值想要回顯數組的「選項」值作爲標籤)?如何訪問傳遞給for循環的數組中的「key」和「value」?

$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; 
+0

我會建議你提高你的格式。該代碼是一個很大的混亂。使用一致的縮進和使用換行符來儘量保持您的代碼簡潔明瞭... – ircmaxell 2011-01-24 17:00:43

回答

5

我想你是什麼在尋找的是:

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

現在,您可以訪問密鑰$key,選項爲$option

4

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

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

參考文獻:foreach in the PHP documentation

4

如果你想從一個關聯數組提取鍵/值對,簡單地使用...

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

...按照PHP foreach manual page

1

整個事情是可以改變的,以這樣的可讀性更好...

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