如何在 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 中循环遍历多维数组并按名称递归删除键?的主要内容,如果未能解决你的问题,请参考以下文章