我有一个如下所示的数组
$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);
很抱歉,但我在正则表达方面不太好。
想法?有什么建议吗?
答案 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"
无论如何,我需要说你可能应该改变你的数据结构。这看起来很糟糕。
答案 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()
来查找该密钥是否存在于该密钥中。