【问题标题】:PHP: How do I search in an unindexed array?PHP:如何在未索引的数组中搜索?
【发布时间】:2011-01-15 06:08:00
【问题描述】:

我有一个这样格式化的数组(这个例子有 5 个键):

[0]: HTTP/1.1 200 OK
[1]: Date: Wed, 10 Feb 2010 12:16:24 GMT
[2]: Server: Apache/2.2.3 (Red Hat)
[3]: X-Powered-By: PHP/5.1.6
[4]: etc..

数组键有时会交替出现,因为其中一个可能会被省略。如何搜索包含“Server: ...”的数组,如果存在则显示?

对于我的生活,我很困惑!

【问题讨论】:

    标签: php search arrays indexing


    【解决方案1】:

    试试

    array_search()在数组中搜索给定的值,如果成功则返回相应的键

    您必须更具体地确定是要搜索子字符串还是精确值,例如您想搜索 "Server: Apache/2.2.3 (Red Hat)" 或其中包含子字符串 "Server" 的任何内容。在后一种情况下,请使用Gumbo's solution,因为array_search 不能用于子字符串搜索。

    【讨论】:

      【解决方案2】:

      试试这个:

       foreach($your_array as $value)
       {
        if (stripos($value, 'Server:') !== false)
        {
          echo $value;  // we found it !!
          break;
        }
       }
      

      【讨论】:

      • 如果Server: 不在字符串的开头怎么办?
      • @Gumbo:它仍然会被找到,我正在使用 stripos,它会在任何地方找到它。
      • @Gumbo:strpos 函数给出了字符串的位置,无论它在哪里找到,你都知道 :)
      • @Sarfraz:是的,这就是重点。提问者可能只想打印以 Server: 开头的值。
      • 这实际上是我正在寻找的,它只能包含一个字符串'Server:'并且可以完美地工作。谢谢萨弗拉兹。
      【解决方案3】:

      直观的方法是迭代数组并测试每个项目:

      foreach ($array as $item) {
          if (strncasecmp(substr($item, 0, 7), 'Server:') === 0) {
              echo $item;
          }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-30
        • 1970-01-01
        • 2015-08-01
        • 2011-10-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多