0
私は配列の値をマージし、結合しないように全体をフラット化する必要があります。私はこれを働かせましたが、私はよりよい方法を見いだすことを望んでいました。PHP; assocを繰り返します。配列を作成し、すべての値を加算します。
ここで配列は、本質的に、です:
array (
[label] => array(
[0] => array(
key => val
)
[1] => array(
key => val
)
)
[label2] => array(
[0] => array(
key => val
)
)
は、私はこれを行うことから、すべての値を追加することです[0]と[1]連想あたり。そして、私が使用して一つの大きな配列にそれを平らに
$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
で、私はこれを行う
array (
[label] => array(
[0] => array(
key => SUM(val1+val2)
)
)
[label2] => array(
[0] => array(
key => val
)
)
:出力のようなものである1つのアレイを、アレイと返します私はこれが醜いと思うし、はるかに効率的な方法で行うことができます。私はそれを理解できず、SPLは私を混乱させる。私は学びたい。
誰かが助けることができますか?
私はそれを考え出したと思う:
$data = array();
$RII = new RecursiveIteratorIterator(
new RecursiveArrayIterator($it)
);
foreach($RII AS $key => $val) {
$data[$RII->key()] += $RII->current();
}
$this->fullData = $data;
は、私が少ないコードにするために必要なすべてをしました。これは正しいか?