laravel 如何查找并删除数组对象中的特定位置?[duplicate]

rqcrx0a6  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(108)
    • 此问题在此处已有答案**:

How to filter a two dimensional array by value(6个答案)
昨天关门了。
我想在对象数组中搜索一些东西,并删除数组位置。例如,跟随数组:

$audits = [{"old_values":[],"new_values":[],"event":"updated","auditable_id":"440","auditable_type":"App\\Models\\User","user_id":"433","user_type":"App\\Models\\User","url":"http:\/\/protocolo-online2\/logout?","ip_address":"127.0.0.1","user_agent":"Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/102.0.0.0 Safari\/537.36","tags":"","created_at":"2023-02-01 09:55:00","login":"mailson.suporte"},{"old_values":{"ultimo_login":"2023-02-01 09:32:16"},"new_values":{"ultimo_login":"2023-02-01 09:55:10"},"event":"updated","auditable_id":"440","auditable_type":"App\\Models\\User","user_id":"440","user_type":"App\\Models\\User","url":"http:\/\/protocolo-online2\/login?","ip_address":"127.0.0.1","user_agent":"Mozilla\/5.0 (X11; Linux x86_64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/102.0.0.0 Safari\/537.36","tags":"","created_at":"2023-02-01 09:55:10","login":"mailson.suporte"}]

我试着做这个代码:

if (($k = array_search(440, array_column(json_decode($audits, true), 'user_id'))) !== false) {
     unset($audits[$k]);
}

但是这种方法不起作用!我可以使用foreach,这种方法:

foreach ($audits as $index => $audit) {
        if($audit->user_id == 440){
            unset($audits[$index]);
        }
 }

但是,如果数组开始变大,我认为foreach并不适合这种情况。
有人能帮我吗?

xdnvmnnf

xdnvmnnf1#

我不得不用php写数组来使它工作,但是我认为这个例子可能会有帮助。
这应该只返回auditable_id值不等于440的行。

$audits = [
    [
        "old_values" => [],
        "new_values" => [],
        "event" => "updated",
        "auditable_id" => "450",
        "auditable_type" => "App\\Models\\User",
        "user_id" => "433",
        "user_type" => "App\\Models\\User",
        "url" => "http://protocolo-online2/logout?",
        "ip_address" => "127.0.0.1",
        "user_agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36",
        "tags" => "",
        "created_at" => "2023-02-01 09:55:00",
        "login" => "mailson.suporte"
    ],
    [
        "old_values" => [
            "ultimo_login" => "2023-02-01 09:32:16"
        ],
        "new_values" => [
            "ultimo_login" => "2023-02-01 09:55:10"
        ],
        "event" => "updated",
        "auditable_id" => "440",
        "auditable_type" => "App\\Models\\User",
        "user_id" => "440",
        "user_type" => "App\\Models\\User",
        "url" => "http://protocolo-online2/login?",
        "ip_address" => "127.0.0.1",
        "user_agent" => "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.0.0 Safari/537.36",
        "tags" => "",
        "created_at" => "2023-02-01 09:55:10",
        "login" => "mailson.suporte"
    ]
];

$audits = array_filter($audits, function ($audit) {
    return $audit['auditable_id'] != '440';
});

相关问题