仅存储某些$ _GET请求值

时间:2019-04-11 13:18:06

标签: php foreach get

当前,我有这段代码存储所有$ _GET请求:

  $array_name = array();
  foreach ($_GET as $key => $value) {
      $array_name[] = "'%".escape_string($value)."%'";
  }

我的目标是以某种方式仅存储某些值,例如,如果我有5个不同的$ _GET请求,分别名为1,2,3,4和5。我只想在此数组中存储1-3。这怎么可能?

4 个答案:

答案 0 :(得分:2)

$array_name = array();
foreach ($_GET as $key => $value) {
  if(in_array($key, array(1, 2, 3)))
    $array_name[] = "'%".escape_string($value)."%'";
  }
}

这是您要寻找的吗?

答案 1 :(得分:1)

您可以获得所需键数组的交集:

foreach(array_intersect_key($_GET, array_flip([1,2,3])) as $value) {
      $array_name[] = "'%".escape_string($value)."%'";
}

答案 2 :(得分:0)

其他答案的方法略有不同。 $keysToStore是要存储的密钥的数组。

然后,foreach循环从$_GET数组中提取这些值,而不是循环整个数组。

$keysToStore = [1, 2, 3];

$array_name = [];
foreach ( $keysToStore as $key ) {
    $array_name[] = "'%" . escape_string( $_GET[$key] ) . "%'";
}

编辑:如果未在其他地方验证密钥,则可以在循环内检查isset

$keysToStore = [1, 2, 3];

$array_name = [];
foreach ( $keysToStore as $key ) {
    if ( isset( $_GET[$key] ) ) {
        $array_name[] = "'%" . escape_string( $_GET[$key] ) . "%'";
    }
}

答案 3 :(得分:-1)

为此,您需要在$ key上添加检查,以确保$ key的值为1或2或3。示例代码如下:

 $array_name = array();
 foreach ($_GET as $key => $value) {
    if($key == '1' || $key == '2' || $key == '3'){
      $array_name[] = "'%".escape_string($value)."%'";
    }
 }

或者其他示例代码是:

 $array_name = array();
 foreach ($_GET as $key => $value) {
     if(in_array($key, array(1, 2, 3))){
      $array_name[] = "'%".escape_string($value)."%'";
    }
 }

这里1,2和3是$ _GET的键。输入示例为:$ _GET ['1'] ='Ghazal',$ _GET ['2'] ='Taimur',$ _GET ['3'] ='Malik',$ _GET ['4'] ='测试',$ _GET ['5'] ='城市'