首页 > 解决方案 > 如何过滤数组而不循环它?

问题描述

我有一个数组中的 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);
    }
}

在不影响性能的情况下最好的方法是什么?

标签: phparrayslaravel

解决方案


我建议使用array_filter

$filteredArray= array_filter($sessionLogs, function ($var) {
    return ($var['special_result'] == true);
});

推荐阅读