0

クラス内の foreach 内で配列を使用する際に問題があります。警告が表示されます..

PHP 警告: foreach() に無効な引数が指定されました

オンライン

foreach($this->recordOfDiscounts as $key => $discount)

問題のある関数は以下のとおりです。

public function modify_price( $price, $product_id ) {
    foreach($this->recordOfDiscounts as $key => $discount) {
        foreach($discount['get_one_free'] as $id) {
            if($id == $product_id){
                if( $discount['valid'] > 0 ) {
                    $price -= $discount['cost'];
                    $this->recordOfDiscounts[$key]['valid'] -= 1;
                }
            }
        }
    }
    return $price;
}

私は PHP を初めて使用しますが、私が集めたのは、クラス スコープ ( $this->) がクラス内の var の前に付ける必要があるということです。

error_log(print_r($this->recordOfDiscounts),0);

正しい配列情報を出力するので、定義されていることがわかります。

Array
(
    [0] => Array
        (
            [valid] => 1
            [buy_one] => 2351
            [cost] => 20
            [old_cost] => 20
            [get_one_free] => Array
                (
                    [0] => 2471
                    [1] => 2470
                    [2] => 2472
                    [3] => 2473
                    [4] => 2474
                    [5] => 2475
                    [6] => 2476
                    [7] => 2477
                )

        )

)
4

1 に答える 1

2

foreach ステートメントの 1 つに、ステートメントの最初の部分として反復不可能なものがあります。

が配列でないか$this->recordOfDiscounts、外側の foreach の 1 回の反復で反復可能で$discount['get_one_free']はありません。

于 2013-01-09T11:00:07.073 に答える