2015-01-16 43 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 
相关问题