Max() 返回第二高的数字...?
Max() returning second highest number...?
在我下面的代码中,print_r($vu_array) returns:
Array ( [0] => 249.99 [1] => 10.99 [2] => 29.99 [3] => 11.99 [4] => 10.99 )
但最大值($vu_array) returns 29.99 和 NOT 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) returns:
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
在我下面的代码中,print_r($vu_array) returns:
Array ( [0] => 249.99 [1] => 10.99 [2] => 29.99 [3] => 11.99 [4] => 10.99 )
但最大值($vu_array) returns 29.99 和 NOT 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) returns:
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