У меня есть некоторые функции, которые работают с данными, представленными в формате массива.Все эти функции выполняют одну и ту же работу, поэтому я хотел бы объединить их в одну функцию.
Проблема в том, что каждая из них получает массивы различной глубины: одно-, двух- и трехмерные массивыиспользуется и, в некоторых будущих реализациях, могут использоваться даже четырехмерные массивы.
В любом случае значимые и необходимые данные всегда находятся в двух самых внутренних массивах, поэтому мне нужно избавиться от внешних массивовпока у меня есть только самые внутренние два уровня.Я сомневаюсь не просто в том, как это сделать, а в том, как сделать это элегантно и эффективно, поскольку мой текущий метод довольно неуклюж.
Текущий метод:
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')
);