- 此问题在此处已有答案**:
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并不适合这种情况。
有人能帮我吗?
1条答案
按热度按时间xdnvmnnf1#
我不得不用php写数组来使它工作,但是我认为这个例子可能会有帮助。
这应该只返回auditable_id值不等于440的行。