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

问题描述 投票:0回答:4

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

注意:未定义的变量:hi

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

$hi .= "hello";

当我删除foreach循环并简单地逐个定义每个空变量时,它会起作用:

$hi = "";
$bye = "";
$hello = "";
php foreach
4个回答
1
投票

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

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

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


0
投票

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

稍后你想要一些你从未使用过的变量。

尝试删除'并写

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

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

Initializing Multiple PHP Variables Simultaneously


0
投票

更简单的方法:

list($ hi,$ bye,$ hello)=“”;


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.