php - 从具有特定内容(特殊字符)的数组中删除元素
问题描述
请求您帮助删除空数组元素,我试过了array_filter
,array_map('array_filter', $array)
但似乎没有按预期工作。下面是数组结构和预期的输出,
原始数组
Array
(
[0] => [
[1] => [
[2] => [
[3] => "Test",
[4] => "Server1",
[5] => null,
[6] => "Server2",
[7] => null,
[8] => "",
[9] => "stopped",
[10] => ]
[11] => ]
[12] => ]
)
预期的数组输出
Array
(
[0] => "Test",
[1] => "Server1",
[2] => null,
[3] => "Server2",
[4] => null,
[5] => "",
[6] => "stopped",
)
请注意,不应删除null
and元素。""
解决方案
您可以将preg_grep与匹配单个[
或的模式一起使用,]
并使用标志PREG_GREP_INVERT
来获得反向匹配。
^\h*[][]\h*$
在零件
^
字符串的开始\h*
匹配 0+ 个水平空白字符[][]
字符类,匹配[
或]
\h*
匹配 0+ 个水平空白字符$
字符串结束
例如
$array = Array
(
"[",
" [",
" [",
"Test",
"Server1",
null,
"Server2",
null,
"",
"stopped",
" ]",
" ]",
"]"
);
$res = preg_grep("/^\h*[][]\h*$/", $array, PREG_GREP_INVERT);
var_export($res);
输出
array (
3 => 'Test',
4 => 'Server1',
5 => NULL,
6 => 'Server2',
7 => NULL,
8 => '',
9 => 'stopped',
)
如果要重置结果数组中的键,可以使用array_values array_values($res)
推荐阅读
- javascript - 使用 svg.js 时“未定义 SVG”
- python - decode 方法在 lambda env 中返回 unicode 响应
- regex - 重定向 ID 号为 htaccess 的 301 网址
- android - Ionic Bluetooth-Classic 插件,用于与本地到本地通信
- angular - Angular @ViewChild 错误“无法读取未定义的属性 nativeElement”
- angular - 'Unexpected token <' 在每个新版本的 Angular 生产 PWA 上,直到站点刷新
- sql - 什么相当于 Azure 中的 MySQL DELIMITER?
- rdma - RDMA 集群基准测试
- c++ - C++ 中初始化列表的顺序
- java - 从任务逐行更新 TextArea 的最佳方法是什么?