使用regex搜索数组中的键并返回值-PHP
假设有一个数组使用regex搜索数组中的键并返回值-PHP,php,arrays,regex,Php,Arrays,Regex,假设有一个数组 $data = array( "key1" => "value1", "key2" => "value2", "key3" => "value3" ); 还有一个字符串可能包含这个数组中的一个键。我想要数组中这个键的值 例如,字符串是“**^%$key1^&*”,其中包含“key1”。我要做的是返回值1 这个例子可能更便于理解: $fruits = array( "apple" => "red", "avocad
$data = array(
"key1" => "value1",
"key2" => "value2",
"key3" => "value3"
);
还有一个字符串可能包含这个数组中的一个键。我想要数组中这个键的值
例如,字符串是“**^%$key1^&*”
,其中包含“key1”
。我要做的是返回值1
这个例子可能更便于理解:
$fruits = array(
"apple" => "red",
"avocado" => "green",
"orange" => "orange"
);
当输入为“Gala apple”时,我希望输出为“红色”
我现在能想到的是使用foreach
$str = "Gala apple";
foreach($fruits as $k=>$v) {
if(preg_match('/'.$k.'/i', $str))
return $v;
}
这个代码有效
但是。。。有什么方法可以避免循环吗?为什么不直接使用
如果密钥字符串中唯一的字母数字字符是有效的密钥,则可以使用函数(如
$result=preg_replace(“/[^a-zA-Z0-9]+/”,“,$s”)来剥离其他字符代码>来自SO post
如果知道该键,则可以使用以下语法直接访问该值:
$array[$key]
示例代码:
$array = array(
"key1" => "val1",
"key2" => "val2",
"key3" => "val3",
"key4" => "val4",
);
echo $array["key2"];
这将回显val2
要验证密钥是否存在,您可以使用isset($array[$key])
或array\u key\u exists($key,$array)
方法。这只是一般的想法:)使用strop而不是regexp@nerdlyist是,“可能包含”表示如果字符串中显示的键,因此*^%$key13^&包含key1是否使用regexp或strposAre字母数字字符,这是您希望保留在字符串中的唯一字符@chris85这是一个糟糕的例子,我已经更新了这个问题,我只希望字符串与数组中的键匹配。
$array = array(
"key1" => "val1",
"key2" => "val2",
"key3" => "val3",
"key4" => "val4",
);
echo $array["key2"];