正在查找比较数组中两个条目的正确方法


Looking for the correct way to compare 2 entries of an array

我试图比较一个数组的两个条目,但我有点难以找到正确写入它的正确方法。

<?php 
     if ($file['name']['link'] != ('user-directory, user')): 
?>

检查我的两个条目namelink是否分别与"用户目录"answers"用户"不同的正确方法是什么?

编辑:为了更具体地说明我要做什么,我想排除一个特定的文件,该文件的变量$file['name']$file['link']加在一起是唯一的。

我的意思是,我有其他文件具有与我试图排除的文件相同的['name']['link'],但它们都没有同时具有$file['name'] = user-directory$file['link'] = user

更新

您正在将不同的变量与不同的值进行比较,因此下面的第二个适用:

 // You want that not even one of these checks is true.
 if (!(
      ('user-directory' === $file['name')
      ||
      ('user' === $file['link')
      //...other..
  )) {
     // If all of them fail...
     echo "Well done!";
  } else {
     // But if even one triggers...
     echo "You broke the rules!"
  }

不同的情况下,可以使用in_array始终相同的变量列表进行比较:

if (!in_array($file['namelink'], [ 'user-directory', 'user' ]) {
   ...
}

[]数组用于最近的PHP。否则使用array('user-directory','user')

这样做的优点是可以快速、干净地向匹配单词列表中添加更多项目。

如果您想要对条件进行更细粒度的控制,或者如果条件不同(例如,不同的变量),则必须使用由&amp;运算符(AND)或||(or):

// None of these conditions must be true,
// i.e. it must never be that condition 1 is true OR condition 2 is, etc.
if (!(
     // Request for user directory
     ('user-directory' === $file['name'])
     ||
     // Request for user, when user is admin
     (('user' === $file['link']) && ('admin' === $_USER))
     ||
     ...// More conditions...
 )) {
    ...
 }

===是因为在某些情况下,PHP会试图"帮助"您比较事物,因此例如0 == "one"是正确的。===之前的字符串而不是后面的字符串是因为,在不可能的情况下,我错误地键入了a=,

// This typo makes it so anyone can login.
if ($input['password'] = 'Squeamish Ossifrage')
// This typo is a syntax error and blows the script
if ('Squeamish Ossifrage' = $input['password'])

如果我理解正确,$file是一个有两个键(namelink)的数组,因此您必须执行两次检查,使用&&:为每个键执行一次检查

<?php 
     $compare = array("user-directory", "user");
     if (!in_array($file['name'], $compare) && !in_array($file['link'], $compare)): 
?>

否则,如果$file['name']应与user-directory不同,并且$file['link']应与user不同:

<?php 
     if ($file['name'] != 'user-directory' && $file['link'] != 'user'): 
?>

也许你不想检查一个或另一个密钥是否不同,在这种情况下,你应该使用||运算符:

<?php 
     if ($file['name'] != 'user-directory' || $file['link'] != 'user'): 
?>