php - 返回数组中大于X的数字

标签 php arrays xpath foreach

以下代码自动找到页面上的最高价:

    $vw_link = get_field('shop_link');

    $ch = curl_init($vw_link);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $cl = curl_exec($ch);

    $dom = new DOMDocument();
    @$dom->loadHTML($cl);
    $xpath = new DOMXpath($dom);

    $price = $xpath->query("//span[@class='price']");

    foreach($price as $value) { 
    $vw_array[] =  floatval(str_replace('$', '', $value->nodeValue));
    update_field('shop_price',max($vw_array));
    }


最好的做法是切片奶酪,如果它可以返回$ vw_array中介于特定数量(即,大于100和小于200)之间的值,那么棘手的部分将是返回100之后的第一个最大数字,如果100-200之间有多个数字。

例如(如果以下价格全部包装在“价格”类中):

$88

$92

$105  <-- return this number

$125

$180

$210


有谁知道如何唤起如此宏伟的功能?

最佳答案

function getHighestValue($arr, $high = 200, $low =100) {
    $data = $arr;
    // sort it so you can find 1st highest value in range
    asort($data);

    foreach ($data as $item) {
    //trim dollar sign as i can see from your example
        $item = ltrim($item, "$");
        if ($item >= $low && $item <= $high) {
            return $item;
        }
    }
  return false;
}


因此,如果您的数据是

$arr = [
    '$140',
    '$22',
    '$143',
    '$199',
];

var_dump(getHighestValue($arr)); // will return 140


您也可以在那之后添加美元符号

关于php - 返回数组中大于X的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27997309/

相关文章:

ruby - Mechanize /Nokogiri 无法使用 xpath 解析 XML

xml - 在 xslt 中格式化和显示日期时间

PHP ksort 意外行为

javascript - 具有相同类别的每个 div 的随机背景图像

php - 按国家/地区文字显示标志

c# - 将字节数组从 C dll 返回到 C#

c++ - 数组长度,为什么从命令行中获取时不能使用它?

javascript - 如何为 wordpress 创建插件

arrays - perl6 取消选择数组或列表元素的快速方法是什么?

java - 撒克逊不同值抛出异常