【问题标题】:Compare strings and only get certain strings that don't match比较字符串并仅获取某些不匹配的字符串
【发布时间】:2017-02-10 05:03:10
【问题描述】:

我有几个字符串,我想要不相等的变量。

例如:

$username
$email
$firstname
$lastname
$gender

$_POST['username'];
$_POST['email'];
$_POST['firstname'];
$_POST['lastname'];
$_POST['gender'];

我想比较$username$_POST['username']$email$_POST['email'],等等...

这就是我想比较的方式:

$username !== $_POST['username']等...

我怎样才能得到不相等的变量(不是$_POST 变量)?

【问题讨论】:

  • if($username!=$_POST['username']) 使用这个....
  • 请检查语法。 @SoniyaReddy
  • @SougataBose 只是比较用户名必须不等于 $_POST['username'] 请让我知道我做错了什么??
  • @jasonmoqio 你遇到了什么问题?
  • @SoniyaReddy,应该是 ===== 而不是 =

标签: php arrays string performance variables


【解决方案1】:

有这么多的值,如果你知道即将出现的字段,我会使用数组。

$vars = ['username' => 'value', 'email' => 'value',
        'firstname' => 'value', 'lastname' =>'value', 'gender'  => 'value'];
foreach($vars as $key => $value){
  if($_POST[$key] !== $value){
    //does not match
  }else{
    // does match
  }
}

【讨论】:

    【解决方案2】:

    由于 POST 参数以数组形式出现,最简单的方法是将变量也放入数组中并使用 array_diff 计算差异:

    $variables = [
        'username' => $username,
        'email' => $email,
        'firstname' => $firstname,
        'lastname' => $lastname,
        'gender' => $gender
    ];
    
    $non_matching = array_diff($variables, $_POST);
    
    echo "Non matching variables: " . join(', ', array_keys($non_matching));
    

    这将打印出如下内容:

    Non matching variables: username, firstname
    

    【讨论】:

      【解决方案3】:

      您可以对每个数组键使用foreach 并使用$$key 来做。

      $username = 'username';
      $email    = 'email~';
      $gender   = 'not gender';
      
      $_POST['username']  = 'username';
      $_POST['email']     = 'email';
      $_POST['firstname'] = 'firstname';
      $_POST['lastname']  = 'lastname';
      $_POST['gender']    = 'gender';
      
      foreach ($_POST as $key => $value) {
          if ( !isset($$key) ) {
              echo 'The variable $' . $key . ' is undefined.' . PHP_EOL;
              continue;
          }
          echo 'Compare $_POST[\'' . $key . '\'] and $' . $key . ': ' . ( $value === $$key ? 'true' : 'false' ) . PHP_EOL;
      }
      

      结果:

      Compare $_POST['username'] and $username: true
      Compare $_POST['email'] and $email: false
      The variable $firstname is undefined.
      The variable $lastname is undefined.
      Compare $_POST['gender'] and $gender: false
      

      【讨论】:

        猜你喜欢
        • 2022-03-30
        • 2020-12-06
        • 1970-01-01
        • 1970-01-01
        • 2021-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-11-18
        相关资源
        最近更新 更多