php用正则匹配二维数组的键值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php用正则匹配二维数组的键值相关的知识,希望对你有一定的参考价值。

数组是这样子的:
Array
(
[sid] => 12099983
[name] => naffan
[GET_19870404] => Array
(
[name] => yifan
[sex] => male
)

[GET_19611008] => Array
(
[name] => guiying
[sex] => female
)

)

我想得到键值以GET_开头的数组。请问我用哪个正则函数,怎么用?
注:不要用 $res = preg_grep("/Array/",$arr);
手册上写的 preg_grep() 返回的结果使用从输入数组来的键名进行索引。 这句话不是让我特别的明白。

这个应用不要正则啊。正则适合复杂的情况(缺点效率差),但这里明显没有那么复杂。
我倒是从你的测试数据看出来 你要过滤出 值是数组的。
array_filter($array, ‘is_array’);这样也不是达到你的目的了吗?追问

我看了手册,这个确实应该能够达到我的目的。但是,你跟我补充的意思一样,如果这个数组里还有别的数组,而不是以get_开头的。那么你的这个不就有问题了么。你说呢。

我想得到键值以GET_开头的数组。 这个是需求。

虽然我已经解决了,我用strpos循环做的。但是,我这个不理想。想看看正则怎么做。你还能么?

追答

$array = array(
'dd'=>'12',
'GET_xx'=>array('123'),
'POST_xx'=>array('12345'),
);

function filter($value) return !preg_match('/^(GET_|POST_)/',$value,$matches);
$result = array_diff_key($array,array_fill_keys(array_filter(array_keys($array),'filter'),''));
var_dump($result);
验证测试通过

参考技术A 提供给你1个思路建议,这个preg_grep函数是只能以1维数组作为参数,所以你必须先循环出这个2维数组,preg_match_all和preg_match比较好用追问

我确实测试过了,这个只对一维有效。另外,你说的方法也没有错误。我明白你说的。你说的没错。但是,不是我想知道的。谢谢了。你还能继续帮我往下多答一点么?

PHP如何根据数组中的键值进行排序

主要是使用PHP的排序函数,asort()和arsort()。

为了减少代码的耦合性,我们将根据数组中的键值进行排序封装成一个函数

 1 <?php
 2 $array = array(
 3     array(name=>aa,price=>1050),
 4     array(name=>bb,price=>4300),
 5     array(name=>cc,price=>3100),
 6     array(name=>dd,price=>4900),
 7     array(name=>ee,price=>960),
 8     array(name=>ff,price=>6299),
 9     array(name=>gg,price=>1200)
10 );
11 function arr_sort($array,$key,$order="asc"){ //asc是升序 desc是降序
12     $arr_nums=$arr=array();
13     foreach($array as $k=>$v){
14         $arr_nums[$k]=$v[$key];
15     }
16     if($order==asc){
17         asort($arr_nums);
18     }else{
19         arsort($arr_nums);
20     }
21     foreach($arr_nums as $k=>$v){
22         $arr[$k]=$array[$k];
23     }
24     print_r($arr);
25 }
26 arr_sort($array,price);

 

以上是关于php用正则匹配二维数组的键值的主要内容,如果未能解决你的问题,请参考以下文章

PHP中如何匹配多个满足正则表达式的字符串

C# 正则表达式获取json字符串中的键值

PHP正则表达式问题

php 求用正则匹配中文以及标点符号

检查是不是存在与正则表达式匹配的数组键

PHP多维数组正则筛选和匹配