自动化IF语句

时间:2017-07-17 12:16:52

标签: php if-statement

我正在寻找同一产品的多个变体的页面。我正在使用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 个答案:

答案 0 :(得分:1)

您可以使用get_object_vars

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

答案 1 :(得分:0)

我确信有很多选择,但也许可以给你一个想法:

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

答案 2 :(得分:0)

从PHP 5开始,您只需使用object iteration

即可

只是这样做

<?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

现在,所有{{1}}属性都已更改&#34;

将代码视为演示(https://eval.in/833456