我不知道造成这个问题的原因,但我会在下面发布代码,然后查看我到目前为止所做的工作以及我得到的结果
$client_emails = array(
'email@ex-one.com' => null, // first array entry
'email@ex-two.com' => 'page_two',
'email@ex-three.com' => 'page_three',
'email@ex-four.com' => null,
);
$form_email = 'email@ex-two.com';
if (!empty($form_email)) {
if (isset($client_emails[$form_email])) {
$client_page = $client_emails[$form_email];
} else { $client_page = null; }
}
if (in_array($form_email, $client_emails)) {
if (!is_null($client_page)) {
echo 'All seems to be good! - ';
echo $client_page;
} else {
echo 'You can not be here.';
}
} else {
echo "For some reason this isn't working... 'in_array' should be finding the email in the array.";
}
上面的代码是我一直在玩的,它不起作用。但是,如果我们将'first array entry' (comment)
的值从NULL
更改为TRUE
,它就会起作用,如下所示:
$client_emails = array(
'email@ex-one.com' => true, // first array entry
'email@ex-two.com' => 'page_two',
'email@ex-three.com' => 'page_three',
'email@ex-four.com' => null,
);
现在整个过程在技术上都有效,但是TRUE
等于1
,现在我的脚本的其余部分无法正常工作,因为它会将其读作1
的值并且回应它。我需要它NULL
。
'first array entry'
不能是NULL
或FALSE
,唯一有效的值是TRUE
。如果$form_email
的值等于没有值的键,如果键具有值并且第一个数组键没有TRUE
的值,那么它可以为空事情无论如何都会失败。
我不明白发生了什么。我有两个问题:
修改
我还尝试过以下方法:
$client_emails = array(
'email@ex-one.com' => 'null', // first array entry
'email@ex-two.com' => 'page_two',
'email@ex-three.com' => 'page_three',
'email@ex-four.com' => 'null',
);
$form_email = 'email@ex-two.com';
if (!empty($form_email)) {
if (isset($client_emails[$form_email])) {
$client_page = $client_emails[$form_email];
} else { $client_page = null; }
}
if (in_array($form_email, $client_emails)) {
if (!empty($client_page) && $client_page != 'null') {
echo 'All seems to be good! - ';
echo $client_page;
} else {
echo 'You can not be here.';
}
} else {
echo "For some reason this isn't working... 'in_array' should be finding the email in the array.";
}
答案 0 :(得分:2)
你的问题是你的if语句:
if (in_array($form_email, $client_emails))
您可以在此处使用值[NULL, "page_two", "page_three", NULL]
)搜索电子邮件,但需要查看密钥(["email@ex-one.com", ..., "email@ex-four.com"]
),因此只需使用array_keys()
,例如
if (in_array($form_email, array_keys($client_emails)))
//^^^^^^^^^^^ See here, so you serach the email in the keys
答案 1 :(得分:2)
为什么不使用array_key_exists
if(array_key_exists($form_email, $client_emails)){
}
答案 2 :(得分:0)
您正在将 <site name="MYWEBSITE" id="4">
<application path="/" applicationPool="Clr4IntegratedAppPool">
<virtualDirectory path="/" physicalPath="D:\MYWEBSITE" />
</application>
<bindings>
<binding protocol="https" bindingInformation="*:44305:localhost" />
<binding protocol="http" bindingInformation="*:6689:localhost" />
</bindings>
</site>
与$form_email
的值进行比较。
$client_emails
if (in_array($form_email, $client_emails)) {
应与$form_email
的键进行比较,而不是值。 - 尝试 -
$client_emails
或检查它们是否存在 -
if (in_array($form_email, array_keys($client_emails))) {