无法在foreach循环中将变量定义为空

时间:2017-12-23 13:10:27

标签: php foreach

我试图通过foreach循环定义三个空变量,以使我的代码更清晰。这是我尝试过的,但是我看到了错误:

  

注意:未定义的变量:hi

foreach(['$hi','$bye','$hello'] as $key) {
    $key = "";
}

$hi .= "hello";

当我删除foreach循环并简单地逐个定义每个空变量时,就像这样,它可以工作:

$hi = "";
$bye = "";
$hello = "";

4 个答案:

答案 0 :(得分:1)

您分配给$key,而不是分配给它的变量。要间接通过变量,您需要使用$$key。但是变量的值不应该包含$,只包括变量名。

foreach (['hi', 'bye', 'hello'] as $key) {
    $$key = "";
}
$hi .= "hello";

但是,如果您发现自己使用这样的变量变量,那么您几乎肯定会做错事。您可能应该使用关联数组。

答案 1 :(得分:0)

您有保存在$ key中的字符串。所以$ key的值是一个字符串,你将它设置为""。

稍后您想要将某些内容附加到您从未使用过的变量上。

尝试删除'并写下

foreach([$hi, $bye, $hello] as $key) {

通常这不是初始化多个变量的最佳方法。试试这个

Initializing Multiple PHP Variables Simultaneously

答案 2 :(得分:0)

更简单的方法:

  

列表($ hi,$ bye,$ hello)="";

答案 3 :(得分:0)

foreach在内存中创建一个新的数组变量,所以你只清除内存中数组中的这些值,这些值在foreach语句中是无用的。最好的方法是:

$h1=$bye=$hello="";

我认为foreach进程的工作速度不比Simple equal(=)快,foreach函数比简单函数使用更多的CPU资源。那是因为数学CPU存在。