2015-01-16 46 views
3

在下面我的代碼,的print_r($ vu_array)返回:Max()返回第二高的數字......?

Array ([0] => 249.99 [1] => 10.99 [2] => 29.99 [3] => 11.99 [4] => 10.99) 

但MAX($ vu_array)返回29.99和 249.99!什麼邪惡的巫術在這裏發生....?

$vu_link = get_field('shop_link'); 

    $ch3 = curl_init($vu_link); 
    curl_setopt($ch3, CURLOPT_RETURNTRANSFER, true); 
    $cl3 = curl_exec($ch3); 

    $dom3 = new DOMDocument(); 
    @$dom3->loadHTML($cl3); 
    $xpath3 = new DOMXpath($dom3); 

    $price3 = $xpath3->query("//p[@class='special-price']/span[@class='price']"); 

    foreach($price3 as $value) { 
     $vu_array[] = str_replace('$', '', $value->nodeValue); 
    } 

編輯:

的var_dump($ vu_array)返回:

array(5) { [0]=> string(43) " 249.99 " [1]=> string(42) " 10.99 " [2]=> string(42) " 29.99 " [3]=> string(42) " 11.99 " [4]=> string(42) " 10.99 " } 
+0

'var_dump($ vu_array)'列出每個條目爲什麼,字符串或什麼? – Prix

+0

適合我!請告訴我們你如何使用'max()' – Rizier123

+0

我已經更新了我的問題。我使用max()作爲:echo max($ vu_array); – Guit4eva

回答

2

你正在做的詞彙(字符串)比較。嘗試改變線的循環裏面:

$vu_array[] = floatval(str_replace('$', '', $value->nodeValue)); 
1

你有你的陣列中的空間,所以這應該工作:

<?php 

    $vu_array = array(" 249.99 ", " 10.99 ", " 29.99 ", " 11.99 ", " 10.99 "); 
    $vu_array = array_map("trim", $vu_array); 
    echo max($vu_array); 

?> 

輸出:

249.99 
0

輸入數組是控股字符串值。如果你想讓max()函數正常工作,你的數組應該包含float-值。

在這裏,我做了一個小例子代碼如何獲得您的給定輸入數組的最大值

$string_arr = array(' 249.99 ', ' 10.99 ', ' 29.99 ', ' 11.99 ', ' 10.99 '); 

$int_arr = array_map('floatval', $string_arr); //converts all values from string to float 

$biggest = max($int_arr); 

var_dump($biggest); //outputs 249.99 
相關問題