php - 根据是否包含 php 过滤数组
问题描述
我的目标是如果“record_type”为空,则从数组中删除整个对象。然后,我应该只剩下在数组中设置了 record_type 的数据。
我查看了数组过滤器,不确定如何定位数组“record_type”中的数据。我唯一的另一个想法是导入数据库,然后 SQL 查询我想要的内容,然后删除我拥有的数据,这更加矫枉过正。
<pre>
array:36 [▼
0 => array:3 [▼
"type" => "comment"
"line_index" => 0
"text_b64" => "OyBjUGFuZWwgZmlyc3Q6ODguMC4xMiAodXBkYXRlX3RpbWUpOjE2MTg1NDYxNDIgQ3BhbmVsOjpab25lRmlsZTo6VkVSU0lPTjoxLjMgaG9zdG5hbWU6cjExOC5sb24yLm15c2VjdXJlY2xvdWRob3N0LmNvbSBs ▶"
]
1 => array:3 [▼
"line_index" => 1
"text_b64" => "OyBab25lIGZpbGUgZm9yIG9ha3RyZWVkZW50YWxtb3J0aW1lci5jby51aw=="
"type" => "comment"
]
2 => array:3 [▼
"text_b64" => "JFRUTCAxNDQwMA=="
"line_index" => 2
"type" => "control"
]
3 => array:6 [▼
"line_index" => 3
"dname_b64" => "b2FrdHJlZWRlbnRhbG1vcnRpbWVyLmNvLnVrLg=="
"record_type" => "SOA"
"ttl" => 30
"type" => "record"
"data_b64" => array:7 [▶]
]
4 => array:6 [▼
"dname_b64" => "b2FrdHJlZWRlbnRhbG1vcnRpbWVyLmNvLnVrLg=="
"line_index" => 10
"record_type" => "NS"
"ttl" => 30
"type" => "record"
"data_b64" => array:1 [▶]
]
5 => array:6 [▼
"ttl" => 30
"dname_b64" => "b2FrdHJlZWRlbnRhbG1vcnRpbWVyLmNvLnVrLg=="
"line_index" => 11
"record_type" => "NS"
"data_b64" => array:1 [▶]
"type" => "record"
]
</pre>
解决方案
如果您的目标是过滤数组以删除任何没有record_type的内部数组,那么请使用array_filter
回调函数fn
来检查该函数是否record_type
存在isset
。
array_filter($arr, fn($el)=>isset($el["record_type"]));
推荐阅读
- python - 有没有办法在 kivy 中使用时钟或其他东西来安排 kv 文件加载
- python - 是否可以根据同一个 dag 中另一个任务的状态在一个 dag 中运行一个任务?
- json - ca api 策略管理器
- java - 如何以数组的形式获取响应
- angular - 我想使用chartJS根据所选图表显示图表
- javascript - 更改无效日期以在 javascript 中返回字符串
- java - Java 浮点数,为什么 2.15 - 1.10 = 1.0499999999999998?
- python-3.x - 如何专门拆分字符串?
- python - 如何从 django python 的 queryset 对象中的 datetimefield 获取月份和年份(2020 年 1 月)?
- python - 在熊猫时间序列图上格式化日期会弄乱日期