【问题标题】:Check for a part of string within an array检查数组中字符串的一部分
【发布时间】:2012-12-31 18:44:54
【问题描述】:

我想检查一个字符串的一部分(不是完整的字符串,因为它是可变的)是否存在于数组中。

$test = array(
  0 => 'my searcg',
  1 => 'set-cookie: shdugdd',
  2 => 'viable: dunno'
);

我想要的是检查任何一个键是否具有字符串“set-cookie”,如果是,则返回该键。我无法检查完整的字符串,因为 set-cookie 的值每次都会有所不同。它也可能不存在,因此也需要检查。

我知道我可以遍历数组并检查相同的内容并获得结果,但我正在寻找更简洁/有效的答案。无法找到解决方案。

【问题讨论】:

  • 循环解决方案最多只有 3 行 - for 语句、strpos 检查和右括号。它可以更简洁吗? :)
  • 您对loop through the array and check the same and get the results 有什么问题?
  • 我的推荐使用php的array_walk函数
  • @Laurent 是的,不会,但很好奇它是否可以以更通用的方式解决。就像in_array 的扩展版本一样,带有strpos'ing。

标签: php arrays string search


【解决方案1】:
foreach($test as $key=> $value)
{
  if (strpos($value,'set-cookie') !== false) 
 {
  echo $key; // print key containing searched string
  }
}

这是另一种选择。 (working example)

   $matches = preg_grep('/set-cookie/', $test); 
    $keys    = array_keys($matches); 

    print_r($matches);

【讨论】:

  • 我知道这可以按照我的帖子中指出的那样完成,但无论如何谢谢:)
  • @Pushpesh 我已经用另一种选择编辑了我的答案。请检查。
  • @Pushpesh 我已将演示链接添加到答案中。
【解决方案2】:

你可以使用php的array_walk函数

这里有详细的解释。

http://php.net/manual/en/function.array-walk.php

谢谢。

【讨论】:

    【解决方案3】:
    function returnkey($arr) {
        foreach($arr as $key => $val) {
            if(strpos($val, 'set-cookie') !== false) {
                return $key;
            }
        } 
        return false;
    }
    

    【讨论】:

      【解决方案4】:

      一个匹配数组中 $str 的函数。

      用例:$key = strInArray ( 'set-cookie', $array );

      function strInArray ( $str, $array ) {
      
          if ( array_walk ( $array, function ( $val, $key ) use ( &$data, $str ) {
              if ( strpos ( $val, $str ) !== false ) {
                  $data = $key;
              }
          }));
      
          return $data;
      }
      

      【讨论】:

        猜你喜欢
        • 2022-01-15
        • 2015-08-29
        • 2019-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-03
        • 1970-01-01
        相关资源
        最近更新 更多