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

I'm trying to define three empty variables through a foreach loop to make my code cleaner. This is what I've tried, however I see the error:

Notice: Undefined variable: hi

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

$hi .= "hello";

When I remove the foreach loop and simply define each empty variable one by one, like this, it works:

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

You have strings which are saved in $key. So the value of $key is a string and you set it to "".

Later you want to append something to a variable you never used.

Try to remove the ' and write

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

Generally thats not the best way to initialise multiple variables. Try this

Initializing Multiple PHP Variables Simultaneously

Easier way:

list($hi, $bye, $hello) = "";

foreach creates a new array variable in memory, so you only clear these values inside the array in memory which is useless out of the foreach sentence. the best way is:

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

I didn't think that a foreach process will work more fast than a Simple equal (=), foreach function uses more CPU resources than a simple =. That's because the math CPU exists.

You're assigning to $key, not to the variable that's named by it. To indirect through a variable, you need to use $$key. But the value of the variable shouldn't include the $, just the variable name.

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

However, if you ever find yourself using variable variables like this, you're almost certainly doing something wrong. You should probably be using an associative array instead.