退出 foreach 循环后变量不会改变
variables do not change after exiting foreach loop
我正在 foreach 循环中更改变量值($eachRelationalColumn["columnFiler"]["enabled"],如图所示)。在 foreach 循环中可以成功更改变量的值(参见图片中的第二行和第四行)。然而,一旦变量离开 foreach 循环,变量就会变成原始值,不会改变(如图中突出显示的那样,两个启用的值都保持为真(1)而不是变成 asdsad 或 falsadsadasdse )。
case "relationalColumnfilter":
foreach ($_SESSION["config_arr"]['tableOptions']['relational_columns']['columns'] as $eachRelationalColumn) {
if ($eachRelationalColumn["displayColumn"]) {
if ($eachRelationalColumn["columnFiler"]["enabled"]) {
//check if displayed relational option is in the selected column filter
//if it is in the selected column filer then change the selected to true
//if it is not in the selected column filter then change the selected to false
if (in_array($eachRelationalColumn["columns_name"]["label"], $setting['value'])) {
echo "<br>" . $eachRelationalColumn["columns_name"]["label"] . " is selected " . "<br>";
$eachRelationalColumn["columnFiler"]["enabled"] = "asdsad";
echo $eachRelationalColumn["columnFiler"]["enabled"];
} else {
echo "<br>" . $eachRelationalColumn["columns_name"]["label"] . " is unselected " . "<br>";
$eachRelationalColumn["columnFiler"]["enabled"] = "falsadsadasdse";
echo $eachRelationalColumn["columnFiler"]["enabled"];
}
}
}
}
echo "<pre>";
print_r($_SESSION["config_arr"]['tableOptions']['relational_columns']['columns']);
echo "<pre>";
为了在循环内更改数组值,您必须向该项目添加引用 &
:
foreach ($_SESSION["config_arr"]['tableOptions']['relational_columns']['columns'] as &$eachRelationalColumn) {
$eachRelationalColumn = 'fooBar';
}
我正在 foreach 循环中更改变量值($eachRelationalColumn["columnFiler"]["enabled"],如图所示)。在 foreach 循环中可以成功更改变量的值(参见图片中的第二行和第四行)。然而,一旦变量离开 foreach 循环,变量就会变成原始值,不会改变(如图中突出显示的那样,两个启用的值都保持为真(1)而不是变成 asdsad 或 falsadsadasdse )。
case "relationalColumnfilter":
foreach ($_SESSION["config_arr"]['tableOptions']['relational_columns']['columns'] as $eachRelationalColumn) {
if ($eachRelationalColumn["displayColumn"]) {
if ($eachRelationalColumn["columnFiler"]["enabled"]) {
//check if displayed relational option is in the selected column filter
//if it is in the selected column filer then change the selected to true
//if it is not in the selected column filter then change the selected to false
if (in_array($eachRelationalColumn["columns_name"]["label"], $setting['value'])) {
echo "<br>" . $eachRelationalColumn["columns_name"]["label"] . " is selected " . "<br>";
$eachRelationalColumn["columnFiler"]["enabled"] = "asdsad";
echo $eachRelationalColumn["columnFiler"]["enabled"];
} else {
echo "<br>" . $eachRelationalColumn["columns_name"]["label"] . " is unselected " . "<br>";
$eachRelationalColumn["columnFiler"]["enabled"] = "falsadsadasdse";
echo $eachRelationalColumn["columnFiler"]["enabled"];
}
}
}
}
echo "<pre>";
print_r($_SESSION["config_arr"]['tableOptions']['relational_columns']['columns']);
echo "<pre>";
为了在循环内更改数组值,您必须向该项目添加引用 &
:
foreach ($_SESSION["config_arr"]['tableOptions']['relational_columns']['columns'] as &$eachRelationalColumn) {
$eachRelationalColumn = 'fooBar';
}