从多维数组中删除数组的最有效方法[重复]

问题描述 投票:-1回答:1

这个问题在这里已有答案:

考虑这个数组:

$userBookmarks = [
    [
        "id": 10000,
        "dateAdded": 1552127606
    ],
    [
        "id": 20000,
        "dateAdded": 1552127610
    ],
    [
        "id": 30000,
        "dateAdded": 1552127614
    ]
]

假设我知道ID是10000,我想删除id值为10000的子数组,这是最有效的方法,所以我可以删除整个子数组并留下这个:

$userBookmarks = [
    [
        "id": 20000,
        "dateAdded": 1552127610
    ],
    [
        "id": 30000,
        "dateAdded": 1552127614
    ]
]

我“最接近”的尝试:

for( $i = 0; $i < count( $userBookmarks ); $i++ ) {

    $currentBookmark = $userBookmarks[ $i ]; 

    if( $currentBookmark['id'] == $newBookmarkID ) {
        unset( $currentBookmark ); 
        break; 
    } else {
        $userBookmarks[] = $newBookmark; 
    }

}

但它真的没有做任何事情......

php arrays
1个回答
0
投票

一个简单的事情要解决。

你需要unset()对子阵列的原始引用。

更改:

unset( $currentBookmark );

至:

unset( $userBookmarks[ $i ] ); 

“功能”替代方案如下所示:

$userBookmarks = [
    ["id" => 10000, "dateAdded" => 1552127606],
    ["id" => 20000, "dateAdded" => 1552127610],
    ["id" => 30000, "dateAdded" => 1552127614]
];

$newBookmarkID = 10000;

$userBookmarks = array_filter($userBookmarks, function ($v) use ($newBookmarkID) {
        return $v['id'] != $newBookmarkID;
    });

var_export($userBookmarks);

演示:https://3v4l.org/uhDB2

© www.soinside.com 2019 - 2024. All rights reserved.