배열 형식으로 제공된 데이터를 처리하는 몇 가지 기능이 있습니다. 이러한 함수는 모두 동일한 작업을 수행하므로 단일 함수로 병합하고 싶습니다.PHP에서 외부 배열 제거
문제는 각각 깊이가 다른 배열을 받는다는 것입니다. 1 차원, 2 차원 및 3 차원 배열이 사용되고 미래의 일부 구현에서는 4 차원 배열이 사용될 수도 있습니다.
어쨌든 중요하고 필요한 데이터는 항상 두 개의 가장 안쪽에있는 배열에 있으므로 가장 안쪽에있는 두 개의 레벨 만있을 때까지 외부 배열을 제거해야합니다. 의심의 여지가 단순히 그것을하는 방법이 아니라, 어떻게 우아하고 효율적으로 할 수있는, 내가 현재의 방법을 좀 서투른 찾으십시오.
현재 방법
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;
}
}
}
몇몇 사용 예 : 데이터 func_get_args 통해 회수 같이
$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')
)
)
);
()는, 모두 간이 배열 안에 넣고.
결과는 다음과 같이해야합니다 :
array(
array('one', 'two', 'three', 'four', 'five'),
array('six', 'seven', 'eight', 'nine', 'ten')
);
현재 방법은 무엇입니까? –
다양한 데이터 구조의 몇 가지 예를 제공하십시오 –
한 인스턴스에서 데이터가 배열이 아니라 다양한 양의 요소가있는 목록으로 전달되기 때문에 func_get_args()가 필요합니다. –