我试图通过foreach循环定义三个空变量,以使我的代码更清晰。这是我尝试过的,但是我看到了错误:
注意:未定义的变量:hi
foreach(['$hi','$bye','$hello'] as $key) {
$key = "";
}
$hi .= "hello";
当我删除foreach循环并简单地逐个定义每个空变量时,就像这样,它可以工作:
$hi = "";
$bye = "";
$hello = "";
答案 0 :(得分:1)
您分配给$key
,而不是分配给它的变量。要间接通过变量,您需要使用$$key
。但是变量的值不应该包含$
,只包括变量名。
foreach (['hi', 'bye', 'hello'] as $key) {
$$key = "";
}
$hi .= "hello";
但是,如果您发现自己使用这样的变量变量,那么您几乎肯定会做错事。您可能应该使用关联数组。
答案 1 :(得分:0)
您有保存在$ key中的字符串。所以$ key的值是一个字符串,你将它设置为""。
稍后您想要将某些内容附加到您从未使用过的变量上。
尝试删除'并写下
foreach([$hi, $bye, $hello] as $key) {
通常这不是初始化多个变量的最佳方法。试试这个
答案 2 :(得分:0)
更简单的方法:
列表($ hi,$ bye,$ hello)="";
答案 3 :(得分:0)
foreach在内存中创建一个新的数组变量,所以你只清除内存中数组中的这些值,这些值在foreach语句中是无用的。最好的方法是:
$h1=$bye=$hello="";
我认为foreach进程的工作速度不比Simple equal(=)快,foreach函数比简单函数使用更多的CPU资源。那是因为数学CPU存在。