2013-07-24 54 views
0

我很新的PHP,所以我想知道什麼是最有效的方式來做到這一點。例如,我有3種不同顏色的3輛汽車作爲變量。所以汽車1獲得顏色1,汽車2顏色2和汽車3顏色3.如果汽車沒有顏色,汽車只會獲得顏色。什麼是最有效的方法來做到這一點?最高效的php布爾

這樣的事情?

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

然後這個布爾值也爲2和3?或者有什麼辦法可以縮短?謝謝!

+0

看看這個http://www.w3schools.com/php/php_operators.asp,會幫你開始 – Ahmad

+0

我不明白,你爲什麼要檢查is_car?創建一個帶顏色變量的班級車。在構造函數中保持undef。然後創建一個方法set_color,它將檢查undef。 – user4035

+0

你是新來的PHP,所以不要打擾你的代碼的效率或長度。寫下它來完成它的工作,繼續學習,過一段時間後再回過頭來看看自己是否有想法讓它變得更好。 –

回答

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; 
} 
+0

感謝您的回覆 – Trekdrop

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

可能是一類的良好局面和實踐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]); 
} 

希望這植入一些想法你的頭! :-)

聲明:我沒有測試過這段代碼,它可能包含錯誤。