2012-09-04 41 views
1

這是我的數組沒有得到最大和最小性價比字符串數組

Array ([0] => $30.00 [1] => $200.00 [2] => $138.00 [3] => $100.00 [4] => $30.00 
[5]=>$30.00 [6] => $30.00) 

試圖從這個數組得到最大值和最小值

echo $maxprice = max($list); 
echo $minprice = min($list); 

我得到最多$ 30.00和$ 100.00分

我猜這是由於價值在錢串。

有人可以告訴我怎麼能得到這個陣列的真正的最大值和最小值?這是真的由於錢串?

在此先感謝

此數組是從多維數組剝了下來。如果是正常的陣列,這將是直接的

+0

您是否嘗試過使用非貨幣價值? –

+0

@arxanas,這個數組從多維數組中剝離。非金錢價值的工作,但我有這個錢字符串格式的問題 – jeezyfreezy

+0

由於「貨幣價值」不是「數字」字符串,字符串比較時發現最小/最大(c.f.數字比較)完成。這按照$ 100.00,$ 138.00,$ 200.00,$ 30.00,$ 30.00,$ 30.00,$ 30.00'的順序排列(從最小到最大)。爲了獲得你正在尋找的行爲,它們需要實際上是數值或至少是數字字符串(即沒有'$')。有很多方法可以從數組中獲取數字字符串。 – salathe

回答

1

您需要使用十進制值(不帶「$」)的陣列英寸美元符號只能在輸出時顯示。

要將字符串轉換爲浮點數,您可以只需array_walk()數組。

如果PHP 5.3或更高,我喜歡用封口這樣

array_walk($array, function (&$value, $key) { 
    $value = (float)ltrim($value, '$'); 
}); 

如果在舊版本的PHP,你需要定義一個單獨的函數,並調用該函數在array_walk這樣

array_walk($array, 'strip_dollar_signs'); 

function strip_dollar_signs (&$value, $key) { 
    $value = (float)ltrim($value, '$'); 
} 

然後只是排序的數組,你通常會

sort($array, SORT_NUMERIC); 
+0

我把值從多維數組存儲到這個數組中 – jeezyfreezy

+0

你能告訴我如何將它轉換成數字嗎? – jeezyfreezy

+0

那麼,你的數組實際上是字符串值嗎? (即「$ 30.00」'不是$ 30.00') –

2

刪除「$」符號,以確保PHP對待值作爲數字

+0

我從多維數組中存儲值到這個數組中。你能不能讓我知道如何將它轉換爲正常數字? – jeezyfreezy

+0

@ jsmoove88 http://bit.ly/NOc2Uz –

+0

這絕對會讓我看起來很傻哈哈..我真的認爲你需要通過步驟將錢串轉換爲數字。沒想到它那麼容易-_- – jeezyfreezy

1

考慮stori只能使用數字值,除非您使用多種貨幣。 該代碼應該讓你的最小和最大

$copy = $list; 
foreach($copy as $key=>$value)$copy[$key] = str_replace('$', '', $value); 

echo $maxprice = max($copy); 
echo $minprice = min($copy); 
相關問題