【问题标题】:How can i make variables beneath a code global and work for code above in php?我怎样才能使代码下的变量成为全局变量并在 php 中为上面的代码工作?
【发布时间】:2020-08-28 17:18:47
【问题描述】:

有什么方法可以帮助我吗?

我的代码很长:

<div class="info-boxx " style="border: 1px solid black; background: <?php echo($color21);?>;">

</div>
$ceeeee21view ="Mastered";
switch ($ceeeee21view) {
                          case "Mastered":
                              $color21="#12c4f9";
                              break;
                          case "Attend To":
                              $color21="#fd0303";
                              break;
                          case "Explore":
                              $color21="#fd7803";
                              break;
                          case "Prompt":
                              $color21="#fdd303";
                              break;
                          case "Unaided":
                              $color21="#58d95e";
                              break;
                          case "Not Applicable":
                             $color21="grey";
                              break;
                          
                          default:                     
                      }
                      /* //////////////////// */

                      

后来我意识到开关必须位于#info-boxx 之上才能使代码正常工作...请我写了近 200 页,每页有 30 到 60 个这种类型。同样的事情......有没有办法让变量 $color 全局?谢谢,我将只搜索 $color21 并将所有内容替换为 global?怎么知道该怎么做..请帮忙....谢谢,我真的希望有一个解决方案.....

【问题讨论】:

  • 您应该将其重构为映射(关联数组),而不是使用如此大的 switch 语句。
  • 你有任何 footer.php 类或包含在所有文件中的东西吗?
  • 将 PHP 代码移到顶部?我看不出将代码放在视图中间有任何明显的目的。
  • 如果你用这样的变量来输出,以后再想做什么都为时已晚。期间。
  • 是的@omi shah 我有

标签: php switch-statement


【解决方案1】:

首先,您应该在编写代码之前进行思考和计划。

请注意,我的回答只是hack 类型的解决方案。我不建议这样做,你应该重构你的代码。

现在要让它发挥作用,你可以这样做。

看看这一行,这一行将使用 info-boxx div 类的 $color21 值覆盖背景颜色。您可以在所有其他文件中添加以下单行,或者如果您有 footer.php 文件或所有其他文件中包含的内容,那么您只需将其添加到您的通用 footer.php 文件中

<style>.info-boxx { background: <?php echo $color21; ?> }</style>

【讨论】:

  • error_reporting(0) 可用于隐藏警告
  • 那么,您在production 中向您的用户显示warnings
  • 而且,我的回答只是fix/alternative,因为 OP 已经犯了一个错误,并且他不愿意重构他的代码。就是这样:)
  • @IncredibleHat,先生,如果 OP 可以编辑该部分,他是否能够重构另一部分?我不是在争论,如果你有这种感觉,我很抱歉。 :)
  • 是的...谢谢@OMiShah,我刚刚尝试过,但我画了所有/其他 div #fd0303 .... 每个 div 都有自己的 $ceeeee(number)view 可以使用跨度>
【解决方案2】:

如果你真的不想重构你的代码,那么你可以使用 Super-global $_POST 来实现这一点。

设置使用:

$_POST['color21']= "#12c4f9";

阅读:

echo $_POST['color21'];

您只需确保在开始时已安全设置该属性,否则用户可能会将他自己的值发送到该属性。您必须注意,属性名称不会用于将数据传输到您的站点。

【讨论】:

    猜你喜欢
    • 2011-06-26
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2017-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多