ホームページ > バックエンド開発 > PHPチュートリアル > PHP 2 つの配列の問題値を比較して出力を決定する方法について

PHP 2 つの配列の問題値を比較して出力を決定する方法について

WBOY
リリース: 2016-06-23 13:36:05
オリジナル
973 人が閲覧しました

2 つのテーブルから 2 セットのデータを取得し、それぞれ $malls と $mall_tems に保存します

次に、2 つの配列を走査して比較する必要があります。記録された color_id と size_id が同じである場合は、$ の価格値を取り出します。フィールドに $malls_tem の価格で保存します

現在、次の foreach ループを使用していますが、失敗します。何が間違っているのかを見つけるのを手伝っていただけますか。

foreach($mall_tems as $mall_tem){    // 使用的 Laravel,$current_mall 就代表获取当前循环的数据吧。    $current_mall = find($mall_tem->id);     foreach($malls as $mall)    {        if($mall_tem->color_id == $mall->color_id && $mall_tem->size_id == $mall->size_id)         {            $current_mall->price = $mall->price;        }else{            $current_mall->price = '129.00';        }    }}
ログイン後にコピー

現在の問題は、$malls を正常に移動できず、$mall_tems の価格データを書き込むことはできますが、それが間違っていることです。

ありがとうございます。


ディスカッションに返信(解決策)

$current_mallの意味が不明瞭以外は問題なし

$current_mallの意味が不明瞭以外は問題なし



カレントを取得保管を容易にする製品レコードのサイクル このレコードへの出力価格を決定するかどうかを入力します。 $current_mall->save(); もありますが、これは省略されています

テストのために別のセクションに印刷する場合も正常です。ループで書くとめちゃくちゃになるのですが、条件を満たすレコードが複数あるのですが、通常ifで決まる価格が書けるのは最初のものだけで、残りはすべてelse価格です。

$current_mall は単一のオブジェクトであり、常に内側のループに代入されます
コードを省略するときに重要なポイントを省略しているため、$current_mall->save() が実行される場所です
なので、明確には何も言えません

一般的な慣例によれば、不一致がある場合には値を代入する必要があるため、$current_mall には初期値があることが理解できます

    $current_mall->price = '129.00';    foreach($malls as $mall)    {        if($mall_tem->color_id == $mall->color_id && $mall_tem->size_id == $mall->size_id)         {            $current_mall->price = $mall->price;            break; //匹配到就结束        }    }    $current_mall->save();
ログイン後にコピー
ログイン後にコピー

$current_mall は単一のオブジェクトであり、常に内側のループで代入されます
$current_mall->save() がどこで実行されるかという重要な部分を省略しているため
、明確には言えません

一般的な慣行によると、実行時に値が割り当てられることもあるので、一致するものはありません。$current_mall には初期値があると理解できます

    $current_mall->price = '129.00';    foreach($malls as $mall)    {        if($mall_tem->color_id == $mall->color_id && $mall_tem->size_id == $mall->size_id)         {            $current_mall->price = $mall->price;            break; //匹配到就结束        }    }    $current_mall->save();
ログイン後にコピー
ログイン後にコピー




ブレークを追加します。OK、データが再び上書きされたことがわかります。
私の命を救ってくれてありがとう。
またよろしくお願いします!
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート