尽管我在上面使用了$$将字符串视为变量:但我这里有一块代码,尽管我在上面使用了$$:

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

我会做什么错?

有帮助吗?

解决方案

我认为问题是PHP解释的事实 $$k[0] 如使用变量的字符串 $k[0] 作为变量的名称,当您只想使用内容的内容 $k 变量为变量的名称。使用 ${$k}[0] 相反,应该使PHP了解您想做什么,而不是使用数组索引作为一部分 $k 多变的。

例如,

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

这将输出“ bar”,但是如果没有卷发括号,它将无法工作。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top