0
배열의 값을 병합하고 연관성을 없애기 위해 전체를 평평하게 배열해야한다. 나는이 일을하고 있지만, 나는 더 나은 길을 찾기를 희망했다.PHP; assoc을 반복합니다. 배열을 만들고 모든 값을 더한다.
여기에 배열, 본질적으로,이다 :
array (
[label] => array(
[0] => array(
key => val
)
[1] => array(
key => val
)
)
[label2] => array(
[0] => array(
key => val
)
)
는 내가 함께 할 것은에서 모든 값을 추가하는 것입니다 [0] [1] ASSOC 당. 배열과 출력이 1 개 배열을 반환 무엇인가 :
array (
[label] => array(
[0] => array(
key => SUM(val1+val2)
)
)
[label2] => array(
[0] => array(
key => val
)
)
나는이 작업을 수행 :
$i = array();
foreach ($array AS $key => $val) {
$i[$key] = NULL;
foreach ($val AS $r) foreach ($r AS $k => $v) {
if (count($array[$key]) > 1) { // Add value.
$i[$key][$k] += $v;
} else { // Leave alone.
$i[$key][$k] = $v;
}
}
}
그럼 사용하여 하나 개의 큰 배열을 평평 :
$array = array();
$r = new RecursiveIteratorIterator(
new RecursiveArrayIterator($array)
);
foreach ($r as $key => $val)
$array[$key] = $val;
return $array
나는 이것이 추악하며 훨씬 더 효율적인 방법으로 행해질 수 있다고 생각한다. 나는 그것을 이해할 수 없으며 SPL이 나를 혼란스럽게합니다. 하지만 나는 배우고 싶다.
누군가 도움을 줄 수 있습니까?
나는 내가 그것을 알아 냈다고 생각한다
$data = array();
$RII = new RecursiveIteratorIterator(
new RecursiveArrayIterator($it)
);
foreach($RII AS $key => $val) {
$data[$RII->key()] += $RII->current();
}
$this->fullData = $data;
내가 적은 코드에 필요한 모든 것을했다. 이 모양이 맞습니까?