提问人:Liam Sorsby 提问时间:6/27/2013 最后编辑:CommunityLiam Sorsby 更新时间:6/11/2022 访问量:816
变量变量不好用?
variable variables bad practice to use?
问:
我刚刚阅读了这篇文章,在 php 中以以下方式使用变量变量是不好的做法吗? 解释为什么它们不适合与类一起使用 但是,我必须创建要排序的动态变量
例如:
$array =
array(
array("Line 1","Line 2","Line 3"),
array("Line 1","Line 2","Line 3"),
array("Line 1","Line 2","Line 3"),
)
$i = 1;
foreach($array as $item){
$string = "Item".$i;
$$string = $item[0]."some code".$item[1]."some code".$item[2]."some code";
}
我知道每个辅助数组中只有 3 个数组值,并且只有 3 个数组。
有没有办法使用“更好的实践”代码来实现这一点?还是我忽略的更简单的方法?
提前感谢您抽出宝贵时间
答:
5赞
deceze
6/27/2013
#1
这应该可以做得很好:
$newArray = array_map(function (array $item) {
return $item[0]."some code".$item[1]."some code".$item[2]."some code";
}, $array);
var_dump($newArray);
我看不出哪里需要单独的变量。
如果你只是动态地连续对变量进行编号(等),你就是在尝试保存动态数量的元素。这正是数组的用途:等。$item1
$item2
$items[0]
$items[1]
评论
0赞
Liam Sorsby
6/27/2013
基本上,它们用于将字符串导入数据库,但使用正确的代码格式化,但我想您是正确的,非常简单,我使问题过于复杂
0赞
mickmackusa
5/26/2022
#2
我当然不会使用“变量”。曾经有一段时间,我认为它们很酷,但不久之后我意识到它们只是放错位置的数据数组。使用变量消除了使用非常强大的原生 PHP 函数的任何可能性。我建议你尽可能远离他们。array_
此外,您的 IDE 将更难跟踪可变命名的变量,并且您会在 IDE 中看到一堆误报警告,表明变量正在被使用而未关闭。
我可能会映射您的输入数组(如@deceze提到的),但这是避免连接字符串的好方法。vsprintf()
代码:(演示)
$array = [
["Line 1", "Line 2", "Line 3"],
["Line 4", "Line 5", "Line 6"],
["Line 7", "Line 8", "Line 9"],
];
var_export(
array_map(
fn($row) => vsprintf('%s some code %s some code %s some code', $row),
$array
)
);
输出:
array (
0 => 'Line 1 some code Line 2 some code Line 3 some code',
1 => 'Line 4 some code Line 5 some code Line 6 some code',
2 => 'Line 7 some code Line 8 some code Line 9 some code',
)
然后(假设您将输出保存为变量而不是打印)每当您想要重新访问此数据时,您可以干净地使用基本循环。
下一个:变量变量不好用?
评论