【问题标题】:in_array($_SERVER["PHP_SELF"], ["/index.php", "/tob.php"]) keeps on returning falsein_array($_SERVER["PHP_SELF"], ["/index.php", "/tob.php"]) 继续返回 false
【发布时间】:2016-04-26 04:28:27
【问题描述】:

我正在尝试检查 index.php 或 tob.php 是否在当前页面的 URL 中。 于是,我试着打开:

/sbfc/public/HR/0-bg.php

它给了我 false,这是意料之中的。但是,当我尝试打开时:

/sbfc/public/tob.php

它的返回值仍然是false。

有解决这个问题的建议吗?我确实有查询,我认为这不是问题的根源,因为我使用的是“PHP_SELF”而不是“QUERY_STRING”。

提前致谢!

编辑:/sbfc/public/HR/0-bg.php 和 /sbfc/public/tob.php 是“PHP_SELF”的结果

【问题讨论】:

  • $_SERVER['PHP_SELF'] 在 tob.php 中返回什么?
  • 意味着您需要检查当前页面是否是来自 index.php 或 tob.php 的页面之一,对吗?
  • 是的,@AddWebSolutionPvtLtd。所以,我希望它在用户打开其他页面而不是 index.php 或 tob.php 时执行不同的代码。
  • 使用 strpos() 代替 in_array() stackoverflow.com/a/4366748/2878894 有帮助吗?
  • 你可以试试$homepage = "/index.php"; $currentpage = $_SERVER['REQUEST_URI']; if($homepage==$currentpage)。

标签: php


【解决方案1】:

因为in_array() 只会搜索字符串的完全匹配。您可能正在寻找strpos(),因为它会在字符串中找到第一次出现的子字符串。您可以在数组中使用循环并在每次迭代时使用 strpos() 来查找 tob.php

【讨论】:

  • $_SERVER['PHP_SELF'] 的数据类型本身不是字符串,我应该先将其转换为字符串才能使用 strpos()。我决定写绝对路径而不是仅仅写/tob.php,它可以工作!这很奇怪,我曾经以确切的方式使用 in_array() 并且它起作用了。 Anw,非常感谢您的解释!
  • 对于 in_array() 数据类型不应该有所不同,您可以通过启用严格模式强制它匹配您正在使用的数据类型(通过在使用函数时添加 true 作为最终参数)。 PHP 网站上有更多关于此功能的文档。或者,array_filter 可能对您更有帮助,正如我在 this question 中发现的那样。
猜你喜欢
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-03
  • 2016-05-19
  • 1970-01-01
  • 2017-10-23
相关资源
最近更新 更多