JP1*_*971 3 php foreach key-value preg-match
我有一个结构如下的数组:
$data = array(
"abc"=>array(
"label" => "abc",
"value" => "def",
"type" => "ghi",
"desc" => "jkl",
),
"def"=>array(
"label" => "mno",
"value" => "qrs",
"type" => "tuv",
"desc" => "wxyz",
),
);
Run Code Online (Sandbox Code Playgroud)
我想使用带有foreach循环的preg_match来对$ data中包含的数组执行搜索,并返回键值对的嵌套数组.
use*_*291 15
对于那里的googlers来说,这是更好的代码
$data = <as above>
$pattern = "/whatever/";
$matches = array_filter($data, function($a) use($pattern) {
return preg_grep($pattern, $a);
});
Run Code Online (Sandbox Code Playgroud)
像这样的东西?
<?php
$data = array(
"abc"=>array(
"label" => "abc",
"value" => "def",
"type" => "ghi",
"desc" => "jkl",
),
"def"=>array(
"label" => "mno",
"value" => "qrs",
"type" => "tuv",
"desc" => "wxyz",
),
);
$matches = array();
$pattern = "/a/i"; //contains an 'a'
//loop through the data
foreach($data as $key=>$value){
//loop through each key under data sub array
foreach($value as $key2=>$value2){
//check for match.
if(preg_match($pattern, $value2)){
//add to matches array.
$matches[$key]=$value;
//match found, so break from foreach
break;
}
}
}
echo '<pre>'.print_r($matches, true).'</pre>';
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7719 次 |
| 最近记录: |