繁体   English   中英

In_array 在 DateTimeZone::ALL_WITH_BC 中看不到元素,为什么?

[英]In_array doesn't see element in DateTimeZone::ALL_WITH_BC, why?

对不起我的英语(谷歌翻译有帮助)))

一般任务是检查接收到的 cookie 中是否存在时区。 如果“找到”,则将其发送到变量,如果不是“未找到”,则将其发送到默认变量。

我显示一个 DateTimeZone::ALL_WITH_BC 时区列表,当列表更改时,通过 in_array 创建一个带有值的 cookie,检查 DateTimeZone::ALL_WITH_BC 数组。 但是带有加号 + 的值不通过检查,即 Etc/GMT+3 等。

示例代码:

<?php
echo '<select id="List">';
$tzlist = DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC);
foreach($tzlist as $value)
{
echo '<option value='. $value .'>'. $value .'</option>';
}
echo '</select>';
$takeCookie = $_COOKIE['cookie'];
if (in_array($takeCookie, DateTimeZone::listIdentifiers(DateTimeZone::ALL_WITH_BC))) 
{
echo "Found";
} 
else {
echo "Not Found";
}
?>
<script>
  $("#List").change(function() {
  var tz = $(this).val();
  document.cookie = "cookie="+tz;
    });
</script>

选择时区并刷新页面时,所有值都是“找到”,除了带+的,为什么?

例如,列表中的 select:

<option value="Etc/GMT+9">Etc/GMT+9</option>

饼干类型:

cookie=Etc/GMT+9

上面的示例代码显示“未找到”。

UPD好的,问题不在于 In_array))

问题在这里:

<script>
    document.cookie = "cookie=Etc/GMT+9";
</script>

<?php
var_dump($_COOKIE['cookie']);
?>

结果:

string(9) "Etc/GMT 9"

加号 (+) 在哪里?

谢谢@Jeto,帮助使用 encodeURIComponent。 喜欢:

<script>
     document.cookie = "cookie="+encodeURIComponent('Etc/GMT+9');
</script>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM