簡體   English   中英

Max()返回第二高的數字......?

[英]Max() returning second highest number…?

在下面的代碼中,print_r($ vu_array)返回:

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 " } 

你正在進行詞法(字符串)比較。 嘗試將循環內的行更改為:

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

你的數組中有空格,所以這應該工作:

<?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

您的輸入數組包含字符串值 如果希望max()函數正常工作,則數組應包含float -values。

在這里,我做了一個小例子代碼,說明如何通過給定的輸入數組獲取max-value

$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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM