2010-03-30 26 views
1

我有一段代碼,這裏不盡管我使用就可以了$$治療字符串作爲變量工作:PHP款待String作爲變量

<? foreach (KOHANA::config('list.amenities_forms') as $k => $v) : ?> 
     <div class="form"> 
      <fieldset> 
       <legend><?php echo $v ?></legend> 
       <input type="checkbox" name="<?=$k?>flag" id="<?=$k?>flag"/> 
       <label class="inline"><?=$v?></label> 

       <label>Description</label> 
       <textarea cols="50" rows="5" name="<?=$k?>[]"><?= empty($$k[0]) ? '' : $$k[0]?></textarea> 

       <label>Size</label> 
       <input type="text" name="<?=$k?>[]" value="<?= empty($$k[1]) ? '' : $$k[1]?>"/> 

       <label>Capacity</label> 
       <input type="text" name="<?=$k?>[]" value="<?= empty($$k[2]) ? '' : $$k[2]?>"/> 
      </fieldset> 
     </div> 
    <? endforeach?> 

功能的Kohana ::配置返回此數組:

'amenities_forms' => array(
     'meeting_space' => 'Meeting Space', 
     'breakfast_room' => 'Breakfast Room', 
     'living_quarters' => 'Living Quarters', 
     'restaurant' => 'Restaurant', 
     'bar' => 'Bar' 
    ) 

什麼可能我是做錯了什麼?

回答

1

我認爲問題是,PHP解釋$$k[0]作爲使用字符串從變量$k[0]作爲變量的名稱,當你想要只使用$k變量的內容作爲變量名的事實。改爲使用${$k}[0],應該讓PHP明白你想要做什麼,而不是使用數組索引作爲$k變量的一部分。

例如,

<?php 
$foo[0] = 'bar'; 
$k = 'foo'; 
echo ${$k}[0]; 
?> 

這將輸出「酒吧」,但它並非沒有大括號工作。

+0

啊。 {}分組。我現在可以拿一個「你是一個NOOB」。 srsly。 – yretuta 2010-03-30 06:53:20