退出 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';
}