我正在尝试使用preg_grep来返回仅存在3个特定字母的密钥数组,即
数组如下:
$testArray = array(
'XXL' => array(),
'XL' => array(),
'L' => array(),
'M' => array(),
'S' => array(),
'XS' => array()
);
我想运行类似的东西(如果我可以让它工作:))
$res = preg_grep('[^XLS]', $testArray);
并获得没有'M'键的返回数组,即
$res = array(
'XXL' => array(),
'XL' => array(),
'L' => array(),
'S' => array(),
'XS' => array()
);
我尝试了多个正则表达式,但我得到了所有的键或没有,有人可以帮忙吗?
非常感谢, 基隆
答案 0 :(得分:2)
preg_grep()
不适用于多维数组。您必须使用array_keys()
单独获取密钥并在其上应用preg_grep()
。现在将array_intersect_key()
与array_flip()
结合使用来创建结果数组:
$keys = preg_grep('/[XLS]/', array_keys($testArray));
$result = array_intersect_key($testArray, array_flip($keys));
输出:
Array
(
[XXL] => Array
(
)
[XL] => Array
(
)
[L] => Array
(
)
[S] => Array
(
)
[XS] => Array
(
)
)