2017-07-17 9 views
0

私は同じ製品の複数の変形があるページに取り組んでいます。 if文を使用して、表示する変更があるかどうかを確認しています。しかし、あなたが見ることができるように、私はif文でほとんど同じことを繰り返しています。複数のif文をどのように自動化できますか?IF文を自動化

このような何か:

if($s->??? !=0) { 
    product->??? = $s->???; 
} 

マイコード:

while ($s = $subProduct->fetch(PDO::FETCH_OBJ)) { 

    $product->variant = $s->variant; 

    if ($s->price != 0) { 
     $product->price = $s->price; 
    } 
    if ($s->battery != 0) { 
     $product->battery = $s->battery; 
    } 
    if ($s->topspeed != 0) { 
     $product->topspeed = $s->topspeed; 
    } 
    if ($s->range != 0) { 
     $product->range = $s->range; 
    } 
} 
+3

$ rはどこから来ますか?ここで開始された$ s変数のみが表示されますか? –

+0

@AbdulRahmanASamad申し訳ありませんが、それは間違いでした。 $ sだけがそこにいなければなりません。修正されました。 –

+1

あなたは正確に何をしようとしていますか?あるオブジェクトから別のオブジェクトにプロパティをコピーするだけでは、 '$ product = $ subProduct-> fetchObject(YOUR_PRODUCT_CLASS)'のようなものを使って、必要以上のものがあるように感じることはありません。 – jeroen

答えて

0

私はたくさんのオプションがあることを確信しているが、もしかしたらあなたのアイデアを与えるために:

$optionalParams = array("range","topspeed","price","battery"); 
foreach($optionalParams as $option) { 
if(isset($s->$option) && $s->$option != 0) 
    $product->$option = $s->$option; 
} 
1

get_object_varsを使用できます。

$vars = get_object_vars($s); 
foreach($vars as $key => $value) { 
    if($s->$key != 0) 
     $product->$key = $s->$key; 
} 
0

PHP 5のとして、あなたはただ単に

foreach ($v as $key => $prop){ 
    if ($prop != 0){ 
     $v->$key = $s->battery; 
    } 
} 

は、完全なコード例は

<?php 
$v= new \stdClass(); 
$v->name = "john"; 
$v->age = 30; 

foreach ($v as $key => $prop){ 
    if ($prop){ 
     $v->$key = "changed"; 
    } 
} 
var_dump($v); 
exit; 

、すべて$vプロパティが "変更" されていることを実行してobject iteration

を使用することができます

コードをデモ(https://eval.in/833456