如何在数组键中搜索子字符串?

时间:2017-05-29 10:09:00

标签: php arrays search substring array-key

我有一个如下所示的数组

$array =array(
 "123,456,789"=> "1,1,1",
 "333"=>"1",
 "777"=>"1"
)

现在,如果我正在搜索456,那么需要返回数组键(123,456,789)及其值(1,1,1)

我也尝试过如下工作,但我没有成功。我需要如果我正在搜索数组键的任何值,如(123或456或789),那么需要提供相同的结果。我知道我可以使用foreach循环实现这一点,但我不想为此创建foreach循环,所以建议我是否存在任何其他解决方案。

$matching_key = preg_grep("/\b456\b/", $array);

很抱歉,但我在正则表达方面不太好。

想法?有什么建议吗?

2 个答案:

答案 0 :(得分:3)

preg_grep函数适用于数组的,而非,因为它是您需要的。

你可以先获得钥匙。

<?php

$array =array(
   "123,456,789"=> "1,1,1",
   "333"=>"1",
   "777"=>"1"
);

$keys = array_keys($array);
$matching_key = preg_grep("/\b456\b/", $keys);

var_dump($matching_key);
//returns "123,456,789"

https://3v4l.org/SndkV

无论如何,我需要说你可能应该改变你的数据结构。这看起来很糟糕。

答案 1 :(得分:0)

这是一次尝试

$array =array(
   "123,456,789"=> "1,1,1",
   "333"=>"1",
   "777"=>"1"
);

$search = '456';
$result = [];

foreach($array as $key=>$value){

  if (strpos($key, $search) !== false) {
    array_push($result, $value);
  }

}

Print_r($result);

$search是一个动态变量,您想要搜索,我使用str_pos()来查找该密钥是否存在于该密钥中。