在php中删除外部数组
我有一些函数处理以数组格式提供的数据。这些函数都做相同的工作,所以我想把它们合并成一个函数 问题是,它们每个接收深度不同的阵列:使用一维、二维和三维阵列,在未来的一些实现中,甚至可能使用四维阵列 在任何情况下,重要和必要的数据总是在两个最里面的数组中,因此我需要去掉外部数组,直到我只有最里面的两个级别。 我怀疑的不仅仅是如何做到这一点,而是如何优雅高效地做到这一点,因为我发现我目前的方法相当笨拙 现行方法:在php中删除外部数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有一些函数处理以数组格式提供的数据。这些函数都做相同的工作,所以我想把它们合并成一个函数 问题是,它们每个接收深度不同的阵列:使用一维、二维和三维阵列,在未来的一些实现中,甚至可能使用四维阵列 在任何情况下,重要和必要的数据总是在两个最里面的数组中,因此我需要去掉外部数组,直到我只有最里面的两个级别。 我怀疑的不仅仅是如何做到这一点,而是如何优雅高效地做到这一点,因为我发现我目前的方法相当笨拙 现行方法: function add() { $data = func_get_args()
function add() {
$data = func_get_args();
if(count($data)>0) {
if(is_array($data[0])) {
if(is_array($data[0][0])) {
foreach($data[0] as $row) {
$this->items[] = $row;
}
} else {
$this->items[] = $data[0];
}
} else {
$this->items[] = $data;
}
}
}
一些使用示例:
$list->add('one', 'two', 'three', 'four', 'five');
$list->add($data_from_DB_in_array_format);
$list->add(
array(
array('one', 'two', 'three', 'four', 'five'),
array('six', 'seven', 'eight', 'nine', 'ten')
)
);
$list->add(
array(
array(
array('one', 'two', 'three', 'four', 'five'),
array('six', 'seven', 'eight', 'nine', 'ten')
)
)
);
由于数据是通过func_get_args()恢复的,所以所有内容都放在一个额外的数组中
结果一定是这样的:
array(
array('one', 'two', 'three', 'four', 'five'),
array('six', 'seven', 'eight', 'nine', 'ten')
);
只有一种方法可以实现这一点,那就是递归性和一点数组函数魔法。这可能不是您的确切解决方案,但如果您需要更多帮助,请致电我:
<?php
$data = array(
'test1' => array(
'test2' => array(
'test3' => array(
'test4' => array(
1,
2,
3
),
'test5' => array(
4,
5,
6
),
'test6' => array(
7,
8,
9
),
)
)
)
);
function returnLast2Levels($item){
if(is_array($item) && is_array(reset($item)) && is_array(reset(reset($item)))){
//This $item has more than 2 levels, delve deeper
return returnLast2Levels(reset($item));
}elseif(is_array($item) && is_array(reset($item)) && !is_array(reset(reset($item)))){
//This $item has 2 levels deep of array
return $item;
}
}
var_dump(returnLast2Levels($data));
您当前的方法是什么?请提供各种数据结构的一些示例func_get_args()是必需的,因为在一个实例中,数据不是以数组的形式传递的,而是以包含不同数量元素的列表的形式传递的。请发布一个从,你想得到什么?你怎么知道内部数组是什么。例如,如果一个数组包含两个数组,它应该选择哪一个?太好了!那正是我要找的!