问题描述
我需要从数组未设置元素嵌套到另一个数组中,只有第一个 N
元素将被保留( N A途径
是predefined)。只有具有数字索引元素都应该受到影响。
I need to unset elements from arrays that are nested into another array, in a way that only the first N
elements would be kept (N
being predefined). Only elements that have a numerical index should be affected.
输入数组:
Array
(
[0] => Array (
[a] => 'w'
[b] => Array (
[0]=> 'x'
[1]=> 'x'
[2]=> 'x'
)
)
[1] => Array (
[a] => 'y'
)
[2] => Array (
[0] => 'z'
[1] => 'z'
[2] => 'z'
)
)
所需的输出(带有 N = 2
)
Array
(
[0] => Array (
[a] => 'w'
[b] => Array (
[0]=> 'x'
[1]=> 'x'
)
)
[1] => Array (
[a] => 'y'
)
)
根据上述定义
,仅 [0] [B] [2]
和 [2]
得到未设置的,因为他们有一个数字指标,因为它们都重新presnted各自阵列的第三元素。
Based on the above definition, only [0][b][2]
and [2]
got unset because they had a numerical index and because they both represnted the 3rd element of their respective array.
推荐答案
没有测试过,但是这样的事情可能会奏效。
Haven't tested but something like this might work.
function myFunc(&$array){
foreach($array as $key=>&$value){
if(is_array($value)){
myFunc($value);
}
if(is_numeric($key) && $key > 1){
unset($array[$key]);
}
}
}
关于array_walk。 php.net说:
About array_walk. php.net says:
程序员不能添加,设置或
重新排序的元素。如果回调不
不尊重这一要求,
此函数的行为是
不确定的,和未predictable。
这篇关于如何使用array_walk_recursive取消设置元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!