我试图比较一个数组的两个条目,但我有点难以找到正确写入它的正确方法。
<?php
if ($file['name']['link'] != ('user-directory, user')):
?>
检查我的两个条目name
和link
是否分别与"用户目录"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')
这样做的优点是可以快速、干净地向匹配单词列表中添加更多项目。
如果您想要对条件进行更细粒度的控制,或者如果条件不同(例如,不同的变量),则必须使用由&;运算符(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
是一个有两个键(name
和link
)的数组,因此您必须执行两次检查,使用&&
:为每个键执行一次检查
<?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'):
?>