最有效的php布尔值

时间:2013-07-24 19:32:27

标签: php boolean performance

我对php很新,所以我想知道最有效的方法是什么。例如,我有3种不同颜色的3辆车作为变量。因此,汽车1获得颜色1,汽车2颜色2和汽车3颜色3.汽车只有颜色,如果它还没有。最有效的方法是什么?

这样的东西?

    if (is_car('1') AND !hascolor) {
        give_color_1 }
    else {
        echo 'Car already has a color'
    }

然后这个布尔也适用于2和3?或者有没有办法缩短它?谢谢!

3 个答案:

答案 0 :(得分:1)

尝试switch声明:

if(!$hascolor) {
    switch(true) {
        case (is_car('1')): set_color($color_1); break;
        case (is_car('2')): set_color($color_2); break;
        case (is_car('3')): set_color($color_3); break;
        default: set_color($color_default); break;
    }
}

答案 1 :(得分:1)

一种方法是使用数组。所以对你的例子来说:

// initialize the array
$car_color_array = Array('1' => '', '2' => '', '3' => '');
$color_array = Array('1' => 'color1', '2' => 'color2', '3' => 'color3');

foreach ($car_color_array  as $car => $color){
    // if color is not set
    if ($color == ''){
        $car_color_array[$car] = $color_array[$car];
    }
}

// this should give cars with colors now
foreach ($car_color_array  as $car => $color){
    echo "<BR>Car: " . $car . " -> Color: " . $color;
}

答案 2 :(得分:1)

如果你还不熟悉,这个可以对于一个班级来说是一个很好的情况并且可以练习OOP技术。这可能不适合你的情况,并且可能有更简单的方法,但我想我为了知识而无论如何都会这样展示!

基本上,在创建一个需要$carNumber的类时(使用可选的$color变量来传递)。然后,创建一个方法来改变该颜色。如果已经有颜色,则不要改变它,否则就是改变它。

class Car{
  public $hasColor = 0;
  public $carNumber = 0;
  public $color = null;

  public function __construct($carNumber, $color = null){
     $this->carNumber = $carNumber;
     if(is_null($color)){

     }else{
        $this->color = $color;
     }
  }

  public function alterColor($colorType){
    if($this->hasColor === 1){
    }else{
      $this->color = $colorType;
      $this->hasColor = 1;
    }
  }
}

现在实施班级......

include_once("Car.php");

$car1 = new Car(1);
$car2 = new Car(2);
$car3 = new Car(3, "Green");

$car1->alterColor("Red");
$car2->alterColor("Blue");
$car3->alterColor("Brown");

所以$car3的颜色不应该改变,因为它已经是绿色了!

如果你想做一个快速的迭代,只需做一些像......

$cars = array($car1, $car2, $car3);
foreach($cars as $car){
   $car->alterColor("Blue");
}

这会将每辆车的颜色改为“蓝色”。如果你想让每辆车都有不同的颜色,你可能会做类似的事情(试图验证现在会调用alterColor,但我想它会......)

$cars = array($car1, $car2, $car3);
$colors = array("Blue", "Red", "Green");
for($i=0; $i<count($cars); $i++){
   $cars[$i]->alterColor($colors[$i]);
}

希望在你脑海中植入一些想法! : - )

免责声明:我尚未测试此代码,但可能包含错误。