变量变量不好用?

variable variables bad practice to use?

提问人:Liam Sorsby 提问时间:6/27/2013 最后编辑:CommunityLiam Sorsby 更新时间:6/11/2022 访问量:816

问:

我刚刚阅读了这篇文章,在 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 个数组。

有没有办法使用“更好的实践”代码来实现这一点?还是我忽略的更简单的方法?

提前感谢您抽出宝贵时间

PHP 数组 变量

评论

0赞 deceze 6/27/2013
在这里使用数组有什么问题?我认为这里根本不需要变量。

答:

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

然后(假设您将输出保存为变量而不是打印)每当您想要重新访问此数据时,您可以干净地使用基本循环。