比较字符串,只得到某些不匹配的字符串
问题描述:
我有几个字符串,我希望变量不相等。比较字符串,只得到某些不匹配的字符串
例如:
$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
变量),不相等对方?
答
有这么多的值,如果你知道你的字段,我会使用数组。
$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
}
}
答
由于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
答
您可以使用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;
}
结果:(!$用户名= $ _ POST [ '用户名'])
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
如果使用这个.... – Sona
请检查语法。 @SoniyaReddy –
@SougataBose我只是比较用户名必须不等于$ _POST ['username']请让我知道我做错了什么? – Sona