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