我有一个数组如下

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

如果我正在搜索456,那么需要返回数组键(123456789)及其值(1,1,1)
我也尝试了下面的方法,但是没有成功,我需要用数组键的任何值(123、456或789)进行搜索,然后提供相同的结果。我知道我可以使用Frach循环来实现这一点,但是我不想为此创建Frach循环,所以如果有其他的解决方案,建议我。
$matching_key = preg_grep("/\b456\b/", $array);

对不起,我的正则表达式不太好。
思想?有什么建议吗?

最佳答案

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
不管怎样,我得说你可能应该改变你的数据结构。这看起来是个糟糕的设计。

10-07 14:01
查看更多