将 $$k[0] 的 PHP 计算从 ${$k[0]} 更改为 ${$k}[0]

发布于 2024-08-27 13:27:48 字数 1293 浏览 14 评论 0原文

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

<? 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::config 返回此数组:

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

我可能做错了什么?

I have a piece of code here that does not work despite me using a $$ on it to treat the string as a variable:

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

the function Kohana::config returns this array:

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

What could I be doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

戴着白色围巾的女孩 2024-09-03 13:27:48

我认为问题在于 PHP 将 $$k[0] 解释为使用变量 $k[0] 中的字符串作为变量的名称,当您只想使用 $k 变量的内容作为变量的名称。使用 ${$k}[0] 代替,应该使 PHP 理解您想要做什么,而不是使用数组索引作为 $k 变量的一部分。

例如,

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

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

I think the problem is the fact that PHP interprets $$k[0] as using the string from the variable $k[0] as the name of the variable, when you wanted to only use the contents of the $k variable as name of the variable. Using ${$k}[0] instead, should make PHP understand what you wanted do and not use the array index as part of the $k variable.

For example,

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

This will output "bar", but it would not work without the curly braces.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文