当前位置: 首页 > 知识库问答 >
问题:

通过检查值删除数组元素php

易琨
2023-03-14

我有一个数组,如下所示

[0=>['classId'=>2,'Name'=>'John'],1=>['classId'=>3,'Name'=>'Doe'],2=>['classId'=>4,'Name'=>'Stayne']]

我需要从数组中删除classId为2或4的元素,预期的结果应该是

[0=>['classId'=>3,'Name'=>'Doe']]

我如何做到这一点而不使用一个循环。希望有人能帮助

共有2个答案

潘辰龙
2023-03-14

您可以将array_filterin_array结合使用。

$array = [0=>['classId'=>2,'Name'=>'John'],1=>['classId'=>3,'Name'=>'Doe'],2=>['classId'=>4,'Name'=>'Stayne']];

var_dump(

    array_filter($array, function($item){return !in_array($item["classId"], [2,4]);})

);

array_filter

如果回调函数返回false,则从数组中移除元素。

in_array

在数组中搜索值;如果(未)找到该值,则返回布尔值true/false。

陶瀚玥
2023-03-14

试试看:

foreach array as $k => $v{
    if ($v['classId'] == 2){
        unset(array[$k]);
    }
}

我刚刚看到了您的编辑,您可以使用array_filter,如下所示:

function class_filter($arr){
    return ($arr['classId'] == "whatever");
}
array_filter($arr, "class_filter");

注意:我相信您仍然需要循环遍历一个多维数组。

 类似资料:
  • 问题内容: 我有ArrayList,我要从中删除具有特定值的元素… 例如 我知道我们可以遍历arraylist和.remove()方法来删除元素,但是我不知道如何在迭代时做到这一点。如何删除具有“ acbd”值的元素,即第二个元素? 问题答案: 在您的情况下,无需遍历列表,因为您知道要删除哪个对象。您有几种选择。首先,您可以按索引删除对象(因此,如果您知道,该对象是第二个列表元素): 然后,您可以

  • 问题内容: 根据用户提交的内容,数组中的某些元素是空字符串。我需要删除那些元素。我有这个: 但这是行不通的。仍然有空元素。我也尝试过使用该功能,但是结果是一样的。 问题答案: 在处理字符串数组时,您可以简单地使用,它可以方便地为您处理所有这一切: 请记住, 如果未提供回调 ,则将删除所有等于(请参见转换为boolean)数组的条目。因此,如果您需要保留元素,即确切的string ,则需要一个自定义

  • 问题内容: 我想删除原始数组(是)中的特定元素。我那个数组,并返回新的数组。但这不会影响此代码中的原始数组。我如何轻松地从原始数组中删除那些元素? 问题答案: 该方法不仅用于收集元素集,而且还用于收集元素集。如果您想通过评估条件来获得一项,那么您还有其他三种选择。,并因此只有当你想对多个项目的操作,你应该考虑使用过滤功能。就需要完成的工作而言,没有一个答案是完整的。他们使用过滤器功能隔离一个集合(

  • 你可以使用delete关键字来删除数组元素。如: delete myObj.sites[1];

  • 如上图片, 每个方块都有一个宽,高,X轴,Y轴; 有可能宽占多份, 高占多份; 但宽度最大就占3份, 高度不限; 每次删除一个格子, 下面的格子自动往左往上补齐; 给到数据假如是: 删除id为5的格子后,希望得到的是:

  • 本文向大家介绍JavaScript通过元素索引号删除数组中对应元素的方法,包括了JavaScript通过元素索引号删除数组中对应元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JavaScript通过元素索引号删除数组中对应元素的方法。分享给大家供大家参考。具体分析如下: JavaScript通过元素的索引号删除数组中的元素,如果要删除第3个元素,则使用RemoveValByIn