我正在尝试比较一个数组的两个条目,但是我正在努力找出正确编写它的方法。
<?php
if ($file['name']['link'] != ('user-directory, user')):
?>
检查我的两个条目name
和link
是否分别与“用户目录”和“用户”不同的正确方法是什么?
修改:为了更具体地说明我要尝试做什么,我想要排除其变量$file['name']
和{{1}的唯一特定文件合并。
我的意思是我的其他文件与我尝试排除的文件相同$file['link']
或['name']
,但没有一个文件['link']
和{{{} 1}}同时。
答案 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
是一个包含两个键(name
和link
)的数组,因此您必须执行两项检查,每项检查一次{ {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'):
?>
运算符:
||