首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在php中从另一个数组中删除一个数组?

如何在php中从另一个数组中删除一个数组?
EN

Stack Overflow用户
提问于 2016-04-29 21:03:05
回答 2查看 1.1K关注 0票数 0

我在PHP中有以下数组: print_r($employees) =

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [p_id] => T29083999
            [name] => Robert Plaxo
        )

    [1] => Array
        (
            [p_id] => T29083388
            [name] => Yvan Sergei
        )

    [2] => Array
        (
            [p_id] => T21083911
            [name] => Rhonda Saunders
        )

    [3] => Array
        (
            [p_id] => H02910382
            [name] => Miguel Mercado
        )
)

然后这个数组: print_r($record) =

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [c_id] => 1
            [section] => 1061
            [term] => 201631
            [p_id] => T29083388
            [c_date] => 2016-04-01 09:14:00
        )

)

我想从$employees中删除与p_id of $record匹配的数组元素。数组$record可能有多个条目,如所示。如果是这样,则必须从p_id中删除$record中的任何$employees。

我试过:

代码语言:javascript
复制
foreach ($employees as $k => $e) {
    foreach ($record as $r) {
        if ($e['p_id']==$r['p_id']) {
            echo "found it!";
            // if I uncomment the next line, it crashes! (500 server error)
            //  unset $employees[$k];
        }           
    }   
}

我只想从$employees中删除任何具有与$record中的任何记录与该雇员id相匹配的雇员的元素。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-04-29 21:12:45

你就快到了,只是需要父母陪伴你的unset()

我还冒昧地更改了您的一些变量名,因为单个字符变量名称困扰着我。

代码语言:javascript
复制
$employees[] = [
    'p_id' => 'T29083999',
    'name' => 'Robert Plaxo',
];
$employees[] = [
    'p_id' => 'T29083388',
    'name' => 'Yvan Sergei',
];
$employees[] = [
    'p_id' => 'T21083911',
    'name' => 'Rhonda Saunders',
];
$employees[] = [
    'p_id' => 'H02910382',
    'name' => 'Miguel Mercado',
];

$records[] = [
        'c_id' => '1',
        'section' => '1061',
        'term' => '201631',
        'p_id' => 'T29083388',
        'c_date' => '2016-04-01 09:14:00',
];

foreach ($employees as $key => $employee) {
    foreach ($records as $record) {
        if ($employee['p_id'] == $record['p_id']) {
            echo "found it!";
            unset($employees[$key]);
        }
    }
}

echo "<pre>";
print_r($employees);

输出

代码语言:javascript
复制
found it!

Array
(
    [0] => Array
        (
            [p_id] => T29083999
            [name] => Robert Plaxo
        )

    [2] => Array
        (
            [p_id] => T21083911
            [name] => Rhonda Saunders
        )

    [3] => Array
        (
            [p_id] => H02910382
            [name] => Miguel Mercado
        )

)
票数 2
EN

Stack Overflow用户

发布于 2016-04-29 21:19:53

使用array_columnarray_filter函数的简短解决方案。它还将适合您的要求"Array $record可能有多个条目“:

代码语言:javascript
复制
$p_ids = array_column($record, "p_id");
$employees = array_filter($employees, function($v) use($p_ids){
    return !in_array($v["p_id"], $p_ids);     
});

print_r($employees);

产出:

代码语言:javascript
复制
Array
(
    [0] => Array
        (
            [p_id] => T29083999
            [name] => Robert Plaxo
        )

    [2] => Array
        (
            [p_id] => T21083911
            [name] => Rhonda Saunders
        )

    [3] => Array
        (
            [p_id] => H02910382
            [name] => Miguel Mercado
        )
)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36947389

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档