2012-10-30 70 views
0

嘿所有我是在PHP類和數組新的,但需要找出如何去從這個類功能陣列得到正確的值PHP類陣列

class theCart { 
    public static $DISTANCE = array(
     '0' => '0 - 75', 
     '10' => '76 - 125', 
     '20' => '126 - 175', 
     '30' => '176 - 225', 
     '40' => '226 - 275', 
     '50' => '276 - 325' 
    ); 
} 

我輸出我試圖匹配的外觀這樣的:76 - 125

我只是把它像

$distanceNum = '76 - 125'; 
$tmpDistanceTotal = $DISTANCE($distanceNum); 

應該$ tmpDistanceTotal然後有一個值?我在想這個數組只有值0,10,20,30,40,50在裏面?

我有另一個數組:

public static $STEPS = array(
    '0' => 0, 
    '1' => 0, 
    '2' => 0, 
    '3' => 25, 
    '4' => 50, 
    '5' => 75, 
    '6' => 100, 
    '7' => 125 
); 

我輸出我試圖以配合上面是我不知道,如果它尋找一個字符串或不是?

回答

3

這應該明確一點:

foreach (theCart::$DISTANCE as $k => $v) { 
    if ($v == '76 - 125') { 
     echo $k; 
     break; 
    } 
} 
+0

爲了增添清晰,使用範圍解析運算符即'::'來訪問類似上面代碼的靜態類變量。您可以在這裏閱讀更多關於它的信息http://php.net/manual/en/language.oop5.static.php –

+0

感謝您的代碼!但是,它似乎不適用於我的第二個數組?看看我上傳的OP。 – StealthRT

1

你的問題其實只是數組,你應該刪除從這裏的類,使事情更容易理解:

$DISTANCE = array(
    '0' => '0 - 75', 
    '10' => '76 - 125', 
    '20' => '126 - 175', 
    '30' => '176 - 225', 
    '40' => '226 - 275', 
    '50' => '276 - 325' 
); 

$variable = $DISTANCE[10]; 

在上面示例變量將等於76-125。你正在使用Associative Arrays,所以你需要仔細閱讀它們,因爲你的問題表明你並不真正理解數組是如何工作的。一旦你有了這些,繼續前進,像上面提到的類的上下文。

您可以檢查出的PHP手冊這裏:http://php.net/manual/en/language.types.array.php

對於短而快速的回答,您可以使用

$tempVar = 10; 
$tmpDistance = $this->DISTANCE[$tempVar]; 
+0

作爲上面提到的人,因爲它是一個靜態變量這不會很有效,但我認爲你需要了解如何訪問類變量以及數組如何工作。 – DaOgre

1

不知道你正在嘗試做的,但你可以使用array_search

$distanceNum = '76 - 125'; 
$key = array_search($distanceNum, theCart::$DISTANCE); 

$key現在是10

+0

感謝您的代碼!但是,它似乎不適用於我的第二個數組?看看我上傳的OP。 – StealthRT

+0

我似乎在OP中的數組左側尋找值的形式,而不是在OP中我的第一個數組示例的右邊。我嘗試使用** $ key = array_search($ steps,theCart :: $ STEPS); **但沒有奏效。 – StealthRT

2

爲$ tmpDistanceTotal來獲取值10,你可以做到以下幾點:

$tmpDistanceTotal = array_search($distanceNum, theCart::DISTANCE); 

,或者您可能希望與這樣的事情結束了:

class theCart { 
    public static $DISTANCE = array(
     '0' => '0 - 75', 
     '10' => '76 - 125', 
     '20' => '126 - 175', 
     '30' => '176 - 225', 
     '40' => '226 - 275', 
     '50' => '276 - 325' 
    ); 

    public function getTotalDistance($distanceNum) 
    { 
     return array_search($distanceNum, self::DISTANCE); 
    } 
} 
+0

感謝您的代碼!但是,它似乎不適用於我的第二個數組?看看我上傳的OP。 – StealthRT

+0

我似乎在OP中的數組左側尋找值的形式,而不是在我的OP中的第一個數組示例的右邊。我嘗試使用** $ key = array_search($ steps,theCart :: $ STEPS); **但沒有奏效。 – StealthRT

+0

我不確定你的示例中的$ steps是否在這裏。看起來$ steps應該是一個字符串,但要與CARD :: STEPS中的鍵字符串匹配 –