提问人:Gideon 提问时间:11/27/2014 更新时间:11/27/2014 访问量:162
使用循环和数组定义 PHP 变量名 - 好的做法?[已结束]
Defining PHP variable names using a loop and arrays - good practice? [closed]
问:
我需要为一个系列定义一组变量
$charta ='<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/aplha.png" alt ="" />';
$chartb ='<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/bravo.png" alt ="" />';
$chartc ='<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/charlie.png" alt ="" />';
等。。。
我不想像这样定义它们,而是想使用一个循环来使用数组来定义它们
$names = array (
'aplha' => 'a',
'bravo' => 'b',
'charlie' => 'c'
);
因此,在阅读了PHP文档中的变量后,我尝试了这个
foreach($names as $k=>$v){
${'chart' . $v} ='<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/'.$k.'.png" alt ="" />';
}
这有效。
我的简单问题是 - 这是好/可接受的做法吗?我向一位更有经验的程序员解释了我的方法,他们告诉我要找到另一种不包含变量的方法,因为它们是不好的做法——但我想不出这有什么问题,也想不出如何做得更好。
思潮?
答:
0赞
Paul Carlton
11/27/2014
#1
我会使用一个以 $v 为键的数组。它是可读的。更好的是:
$names = array(
'a' => 'yourimage1',
'b' => 'yourimage2',
'c' => 'yourimage3',
);
function chartImage($img_string = 'your-default-img')
{
return '<img src="'.$_SERVER["DOCUMENT_ROOT"].'/output/pdf/charts/'.$img_string.'.png" alt ="" />';
}
// somewhere in your code
print chartImage($names['a']); // or
<?= chartImage($names['a']); ?>
我会这样做,因为很容易看到你在做什么。更好的可读性。
定义数据后,变量是不好的做法。没有理由使用它。当您处理未知数据时,会使用变量。由于您知道并预定义序列中的变量,因此变量变量不会增加增强功能,并且可能会在查看代码时使第二组眼睛感到非常困惑。
使用变量的一个很好的例子是在调查中。您不确定将有多少验证或答案,因此您将编写包含变量数据的变量。当我创建一个调查系统时,我创建了变量,这些变量保存了处理验证类型和输入类型的数组的变量数据。它归结为上下文和修复解决方案。在上下文中使用变量并不能解决问题。
评论
$charts
$charts[$v] = ..