Ticket #853 (new バグ指摘) — at Version 1

Opened 15 years ago

Last modified 15 years ago

SC_FormParam#getSwapArray 歯抜けを正しく処理できない

Reported by: Seasoft Owned by: somebody
Priority: Milestone: EC-CUBE2.11.2
Component: その他 Version: 2.3.4
Keywords: Cc:
修正済み: yes

Description (last modified by Seasoft) (diff)

配列に歯抜けが無い前提となっている。歯抜けがあると、後方のデータが欠落する。

    function getSwapArray($arrKey) {
        foreach($arrKey as $keyname) {
            $arrVal = $this->getValue($keyname);
            $max = count($arrVal);
            for($i = 0; $i < $max; $i++) {
                $arrRet[$i][$keyname] = $arrVal[$i];
            }
        }
        return $arrRet;
    }

改訂案

    function getSwapArray($arrKey) {
        $arrRet = array();
        foreach($arrKey as $keyname) {
            $arrVal = (array)$this->getValue($keyname);
            foreach ($arrVal as $index => $val) {
                $arrRet[$index][$keyname] = $val;
            }
        }
        return $arrRet;
    }
  • 従来は歯抜けの要素に NULL がセットされていたのが、未定義となるため、この事による現実装への影響が読みきれていない。

最新の実装は未確認ですが、備忘録として、一旦 2.5 のマイルストーンを貼らせてください。

Change History

comment:1 Changed 15 years ago by Seasoft

  • Description modified (diff)
Note: See TracTickets for help on using tickets.