php - 如何过滤数组而不循环它?
问题描述
我有一个数组中的 30 个元素
array:30 [▼
0 => array:8 [▼
"agent_id" => "958e9264-8f7d-11ea-a18a-2e2ea6f9a94a"
"folder_name" => "2020-10-26-145338"
"special_result" => false
"is_special_exec" => false
"logs_path" => "/var/log/apple/f1132f00-b8fa-11e9-85e0-0050568d2010/ue3/2020-10-26-145338"
"logs_url" => "http://api:31004/apple/controller/v1/account/f1132f00-b8fa-11e9-85e0-0050568d2010/session/ue3/logs?path=%2Fvar%2Flog%2Fapple%2Ff1132f00-b8fa-11e9-85e0-0 ▶"
"result" => "PASSED"
"session_name" => "ue3"
]
...
我只想过滤掉"is_special_exec" => true
我试图避免这样做
$specialLogs = [];
foreach ($sessionLogs as $log) {
if($log['special_result'] == true){
array_push($specialLogs, $log);
}
}
在不影响性能的情况下最好的方法是什么?
解决方案
我建议使用array_filter
$filteredArray= array_filter($sessionLogs, function ($var) {
return ($var['special_result'] == true);
});
推荐阅读
- linux - 重定向中的算术表达式
- laravel - 当测试配置为使用 sqlite 时,测试用例创建重复条目并删除 mysql 数据库条目
- javascript - undefined 不是一个对象(评估 'navigation.navigate') React Native
- python - 为什么我的机器人循环给了我多个答案?
- c++ - 在 C++ 中找到 5 个不同元素的最小和最大元素
- c# - 参数传递一个 TCPClient 对象
- javascript - 我有一个对象数组。每个对象都包含最大和最小键值对。如何找到包含预定义值的对象?
- flutter - Flutter:如何滚动容器而不是其内容?
- java - PropertyDescriptor 类在 java 中的工作原理
- php - 如何从同一张表中获取所有计数的总和?