首页 > 解决方案 > 如何从php中的数组中删除特定元素

问题描述

我有以下数组

Array
(
    [tags] => Array
        (
            [0] => hello
        )

    [assignee] => 60b6a8a38cf91900695dd46b
    [multiple_assignee] => Array
        (
            [0] => Array
                (
                    [accountId] => 60b6a8a38cf91900695dd46b
                )

            [1] => Array
                (
                    [accountId] => 5b39d23d32e26a2de15f174f
                )

        )

)

我想60b6a8a38cf91900695dd46b从 multiple_assignee 数组中删除。我尝试过使用以下代码:

if (($key = array_search($this->getUsersHashMapValue($responsiblePartyIds[0]), $mutipleAssignee)) !== false) {
                        unset($mutipleAssignee[$key]['accountId']);
                    }

但它并没有删除那个元素。目的是我不想60b6a8a38cf91900695dd46b在多个受让人数组中重复受让人。

我也尝试过使用以下代码:

foreach($mutipleAssignee as $subKey => $subArray){
                        if($subArray['accountId'] == $this->getUsersHashMapValue($responsiblePartyIds[0])){
                            unset($mutipleAssignee[$subKey]);
                        }
                    }

但结果是

Array
(
    [tags] => Array
        (
            [0] => hello
        )

    [assignee] => 60b6a8a38cf91900695dd46b
    [multiple_assignee] => Array
        (
            [1] => Array
                (
                    [accountId] => 5b39d23d32e26a2de15f174f
                )

        )

)

而不是

[multiple_assignee] => Array
            (
                [0] => Array
                    (
                        [accountId] => 5b39d23d32e26a2de15f174f
                    )
    
            )

谢谢

标签: phparraysmultidimensional-array

解决方案


只需提取accountId列并搜索即可。然后使用该键:

$key = array_search($this->getUsersHashMapValue($responsiblePartyIds[0]), 
                    array_column($mutipleAssignee, 'accountId'));
                    
unset($mutipleAssignee[$key]);

编辑后,您似乎只想在以下之后重新索引子数组unset

$mutipleAssignee = array_values($mutipleAssignee);

推荐阅读