寻找比较数组的2个条目的正确方法

时间:2015-11-05 23:23:52

标签: php

我正在尝试比较一个数组的两个条目,但是我正在努力找出正确编写它的方法。

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

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

修改:为了更具体地说明我要尝试做什么,我想要排除其变量$file['name']和{{1}的唯一特定文件合并。

我的意思是我的其他文件与我尝试排除的文件相同$file['link']['name'],但没有一个文件['link']和{{{} 1}}同时。

2 个答案:

答案 0 :(得分:2)

<强>更新

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

 // 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;&amp;和&amp; 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会尝试&#34;帮助&#34;你在比较事物,所以例如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'])

答案 1 :(得分:1)

如果我理解正确,$file是一个包含两个键(namelink)的数组,因此您必须执行两项检查,每项检查一次{ {1}}:

&&

否则,如果<?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'): ?> 运算符:

||
相关问题