首页 > 解决方案 > 如何从php中的页面url获取所有变量

问题描述

我有一个这样的 php 代码

<?php 
  if(isset($_GET['qry'])) {

   echo $_GET['qry']; 

  }else if(isset($_GET['ct'])) {

   echo $_GET['ct']; 

  } else if(isset($_GET['sct'])) {

   echo $_GET['sct']; 

  } else if(isset($_GET['brand'])) {

   echo $_GET['brand']; 

  } else {

   echo "";

} ?>

这里发生的是我想从 url 中的变量中获取值,但是它们在同一页面上有所不同。所以请有一种更简单的方法来做到这一点,方法是从变量中获取所有值并将其分配给我的代码中的一个变量,而无需在页面中输入所有变量,例如

例如

$allVariables = $_GET['get all variables'];

if($allVariables == '1'){ 

//do this

}

OR

if($allVariables == '2') {

// do this

}

请问有没有办法我可以做到这一点

标签: phpurlget

解决方案


$_GET是php中的超全局示例:

超全局变量是在所有范围内始终可用的内置变量。

特别$_GET是:

通过 URL 参数(又名查询字符串)传递给当前脚本的变量关联数组。

您可以使用null 合并运算符一步来检查是否$_GET设置了参数并将变量设置为等于其值

$var = $_GET['some_parameter'] ?? null

在这种情况下,如果它存在则$var等于 的值$_GET['some_parameter'],否则为 null。

~~~~~编辑~~~~~

正如评论中所指出的,此运算符仅在 php 7.2.0 及更高版本中可用。要在版本 < 7.2 中实现相同功能,请使用三元运算符

$var= isset($_GET['some_parameter']) ? $_GET['some_parameter'] : null;

~~~~~~~~~~~~~~~


在您检查的代码中if($allVariables == '1'){//do this},如果您实际上是在尝试检查通过 URL 传递的参数数量,您应该使用该count()函数。

if (count($_GET) == 1) {
  // do this
} else if (count($_GET) == 2) {
  // do this instead
}

...但这将是有限的用途,因为它不会告诉您有关已传递哪些参数的任何信息。


推荐阅读