如何在PHP中递归地通过名称删除多维数组的键?

5
我正在尝试循环遍历一个多维数组,以下是代码。我想要一个函数,可以将数组传递给它并传递需要删除的键。函数大致长这样:function removeItemFromMArray($YourArray, $RemoveKeyNamed);。

stdClass Object
(
    [products] => Array
        (
            [0] => stdClass Object
                (
                    [title] => New Balance - Variable Demo
                    [created_at] => 2013-07-24T14:35:21Z
                    [updated_at] => 2013-07-24T14:35:21Z
                    [type] => variable
                    [status] => publish
                    [downloadable] => 
                    [virtual] => 
                )
[1] => stdClass Object ( [title] => Mismo - Briefcase [created_at] => 2013-06-10T13:18:17Z [updated_at] => 2013-06-10T13:18:17Z [type] => simple [status] => publish [downloadable] => [virtual] => ) ) )
我想要删除ID,并返回一个除了ID以外的新数组。

5
ID是对象的一部分,而不是数组。 - Ray
进一步说,根据Ray的评论,在所示的例子中没有多维数组;它是一个带有“products”属性的对象,后者是一个(单维,关联)stdClass对象数组。 - salathe
我想要确保它,但它是多维的。 - Alex Williams
1个回答

5

您有一个对象数组

function removeItemFromMArray($YourArray, $RemoveKeyNamed) {
    foreach ($YourArray as $object) {
        unset($object->$RemoveKeyNamed);
    }
    return $YourArray;
}
$products = removeItemFromMArray($myArray->products, 'id');

或者

function removeItemFromMArray(&$YourArray, $RemoveKeyNamed) {
    foreach ($YourArray as $object) {
        unset($object->$RemoveKeyNamed);
    }
}
removeItemFromMArray($myArray->products, 'id');

我们几乎是一样的。你需要将$YourArray作为引用接受。 - AbraCadaver
谢谢你,@AbraCadaverless。我也更新了答案。 - cornelb
@cornelb 没有必要使用 foreach-by-reference,也不需要用花括号包装 variable property。我已经为您编辑好了。 - salathe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接