【问题标题】:Correct useage of dynamic variable variables within curly brackets?正确使用大括号内的动态变量变量?
【发布时间】:2020-04-15 20:50:17
【问题描述】:

${str_replace(' ', '_', $group_name)} 中使用大括号{ } 是否有效,以调用可变变量?

$group_name 本身应该由foreach loop 提供,但是因为许多组名都带有空格(例如LICENSE INFORMATION 是两个单词之间有一个空格并且可能是非法变量名) - 因此我'必须包含str_replace 才能用下划线替换空格。所有这些最终都发生在大括号 { ... } 内,我希望这将使 PHP 能够正确解析它。

<?php   
...

foreach ($grouped as $IMSKU){

        $all_grouped_blocks = [];

        foreach ($IMSKU['Group_Name'] as $group_name_index => $group_name){


            if (!isset(${str_replace(' ', '_', $group_name)})){ 

            ${str_replace(' ', '_', $group_name)} = []; 

            ${str_replace(' ', '_', $group_name)} = '<th colspan="3">'."$group_name".'</th>';


            array_push($all_grouped_blocks,${str_replace(' ', '_', $group_name)});
            }
        }
}

【问题讨论】:

  • 那么,它奏效了吗?就个人而言,由于您多次使用该约定,我会做类似$key = str_replace( ... ) 然后参考$$key
  • @TimMorton 因为我必须立即运行!isset 测试,我担心以任何方式预先设置变量会混淆测试?
  • 这是单元测试(和 TDD)非常有用的地方,但我离题了。在我的脑海中,在我看来,$key 总是会被设置;不过,您仍然需要检查isset($$key)

标签: php variables dynamic


【解决方案1】:

我想我可以通过类似的例子证明它是有效的——假设你同意:

<?php

$big_boy = "Ain't this fella big.<br />";
$small_toy = "Size doesn't matter.<br />";
$double_trouble = "Team Rocket is blasting awaaaaaay!<br />";

$theme = array(0 => 'big boy', 1 =>'small toy', 2 => 'double trouble');

foreach ($theme as $key => $value){

echo ${str_replace(' ','_',$value)};


}
?>

输出:

Ain't this fella big. 
Size doesn't matter. 
Team Rocket is blasting awaaaaaay!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-04
    • 2019-07-04
    • 2016-09-14
    • 2014-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多