【问题标题】:An easier way to define these variables?定义这些变量的更简单方法?
【发布时间】:2026-01-01 17:50:01
【问题描述】:
$access_community = 1;
$access_content = 1;
$access_tools = 1;
$access_administrator = 0;
$access_moderator = 0;

只是想知道是否有更简单的方法可以使用数组来编写它?这似乎有点矫枉过正。

谢谢!

【问题讨论】:

  • 这确实看起来像一个数组的情况,但很难说该怎么做,因为我们不知道上下文。
  • 设置变量有什么过火之处?
  • @Pekka;他们将需要稍后使用 if ($access_?? == 1) 等进行访问。@Col。弹片 当我确定有更快的方法时,写所有这些似乎是在浪费时间。
  • Sam,every 变量将在后面的代码中使用。你对 Pekka 的回答实际上并没有回答任何问题。
  • 嗯,我就是这么用的:)。

标签: php arrays variables


【解决方案1】:

你可以做类似的事情(糟糕的可读性):

$access_community = $access_content = $access_tools = 1;
$access_administrator = $access_moderator = 0;

或者如前所述,使用数组:

$access = array('community' => 1,
                'content' => 1,
                'tools' => 1,
                'administrator' => 0,
                'moderator' => 0);

【讨论】:

  • 那么我可以使用 echo $access_community 访问那些(会回显 1 吗?)?
  • 第一个解决方案是。使用数组解决方案,您必须这样做echo $access['community']
  • 太棒了,谢谢。也感谢所有其他答案:)。
  • 虽然第二个是明智的,但第一个是可怕的。这些设置在不同的页面上肯定会有所不同。并且很难从这些行中获得页面访问权限的图片。
  • 这就是为什么我说它的可读性很糟糕。但这是一个解决方案,否则它不会内置在 php.ini 中。我也宁愿用第二个。
【解决方案2】:

如果你有更多的变量,那么像:

$access = array( 'community' => 1, 'content' => 1, ... );
foreach ($access as $k => $v) {
    $real_name = 'access_' . $k;
    $$real_name = $v;
}

可能有效,但不是那么好,而且可能比您现在的代码更加矫枉过正。老实说,我认为你所拥有的还不错!

如果您有兴趣,这将使用间接引用或"variable variables" 来实际定义新变量。不过,我不太确定这里的范围。

当然,如果可以的话,尝试直接使用数组,而不是依赖那里的变量 - 数组可以更改和传递,这与变量不同。

【讨论】:

  • 好吧,这不是一个很好的解决方案! :) 如果 OP 真的需要像这样定义变量,它可能是唯一的,例如用于与外部代码交互。
  • 嘿,只是在寻找想法:)。将来我可能会有大约 30 或 40 条这样的行,所以我想一定有更简单的方法:)。
  • @Sam:在这种情况下,我建议使用 faileN 答案中的第二种解决方案。
  • 每次使用变量变量时,你肯定知道自己做错了
  • @Col。弹片:gotoeval 也有它们的用途。
【解决方案3】:

因为你几乎无法解释你在做什么以及为什么,我们只能猜测。

看起来有点像ACL
因此,设置这些变量的唯一明智方法是将其存储在数据库中。特别是如果将来会有几十个。

http://phpgacl.sourceforge.net/ 可能就是你要找的东西

因此,您的变量将被分配数据库中的值。

至于你问的答案 - 不,没有其他方法可以用不同的值初始化不同的变量。您必须明确设置每个变量值。所以,你必须以某种方式定义一个变量名和一个变量值。所以,

$variable = value

是最简单方便的方式。
你可以让它变得更复杂,但它的核心保持不变:“变量名 - 变量值”对

【讨论】: