如何在 PHP 中循环遍历多维数组并按名称递归删除键?

Posted

技术标签:

【中文标题】如何在 PHP 中循环遍历多维数组并按名称递归删除键?【英文标题】:How do you loop through an multidimenional array and delete key by name recursively in PHP? 【发布时间】:2014-03-31 15:15:31 【问题描述】:

我正在尝试循环遍历一个多维数组,代码发布在下面。我想要一个可以将数组传递给的函数和一个可以删除的键。它类似于函数 removeItemFromMArray($YourArray, $RemoveKeyNamed); .

stdClass Object ( [products] => Array ( [0] => stdClass Object ( [title] => New Balance - Variable Demo [id] => 10393 [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 [id] => 9619 [created_at] => 2013-06-10T13:18:17Z [updated_at] => 2013-06-10T13:18:17Z [type] => simple [status] => publish [downloadable] => [virtual] => ) ) )

我想删除 ID 并返回一个新数组,其中包含除 ID 之外的所有内容。

【问题讨论】:

id 是对象而不是数组的一部分 为了进一步说明 Ray 的意见,所示示例中没有多维数组;它是一个具有products 属性的对象,后者是stdClass 对象的(一维关联)数组。 我想确定,但它是多维的。 【参考方案1】:

你有一个对象数组

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 作为参考。 谢谢你,@AbraCadaverless。我也更新了答案 @cornelb 没有必要使用 foreach-by-reference,也没有必要用花括号包裹 variable 属性。为您编辑。

以上是关于如何在 PHP 中循环遍历多维数组并按名称递归删除键?的主要内容,如果未能解决你的问题,请参考以下文章

如何用php创建一个无限遍历数组,并打印

php无限极分类递归写入多维数组的方法

PHP 递归遍历文件夹到多维数组

PHP 递归遍历多维数组

js递归(二)——合并多维数组

在 PHP 中递归创建多维数组